home *** CD-ROM | disk | FTP | other *** search
/ Best of Shareware / Best of PC Windows Shareware 1.0 - Wayzata Technology (7111) (1993).iso / mac / ZIPPED / DOS / GRAPHICS / RAYSH386.ZIP / SRC / YACC_TAB.C < prev    next >
C/C++ Source or Header  |  1992-04-30  |  84KB  |  2,688 lines

  1.  
  2. /*  A Bison parser, made from yacc.y  */
  3.  
  4. #define    tFLOAT    258
  5. #define    tSTRING    259
  6. #define    tFILENAME    260
  7. #define    tAPERTURE    261
  8. #define    tAPPLYSURF    262
  9. #define    tBACKGROUND    263
  10. #define    tBLOB    264
  11. #define    tBLOTCH    265
  12. #define    tBOX    266
  13. #define    tBUMP    267
  14. #define    tCONE    268
  15. #define    tCYL    269
  16. #define    tDIRECTIONAL    270
  17. #define    tCURSURF    271
  18. #define    tEXTENDED    272
  19. #define    tEYEP    273
  20. #define    tFBM    274
  21. #define    tFBMBUMP    275
  22. #define    tFOCALDIST    276
  23. #define    tFOG    277
  24. #define    tFOGDECK    278
  25. #define    tFOV    279
  26. #define    tGLOSS    280
  27. #define    tGRID    281
  28. #define    tHEIGHTFIELD    282
  29. #define    tLIGHT    283
  30. #define    tLIST    284
  31. #define    tLOOKP    285
  32. #define    tMARBLE    286
  33. #define    tMAXDEPTH    287
  34. #define    tMIST    288
  35. #define    tJITTER    289
  36. #define    tNOJITTER    290
  37. #define    tDEFINE    291
  38. #define    tOBJECT    292
  39. #define    tOUTFILE    293
  40. #define    tSKY    294
  41. #define    tDISC    295
  42. #define    tDIFFERENCE    296
  43. #define    tUNION    297
  44. #define    tINTERSECT    298
  45. #define    tPLANE    299
  46. #define    tPOINT    300
  47. #define    tPOLY    301
  48. #define    tROTATE    302
  49. #define    tSPOT    303
  50. #define    tPRINT    304
  51. #define    tSCALE    305
  52. #define    tSCREEN    306
  53. #define    tSPHERE    307
  54. #define    tSURFACE    308
  55. #define    tTHRESH    309
  56. #define    tTRANSLATE    310
  57. #define    tTRANSFORM    311
  58. #define    tTRIANGLE    312
  59. #define    tTRIANGLEUV    313
  60. #define    tUP    314
  61. #define    tEND    315
  62. #define    tTEXTURE    316
  63. #define    tCHECKER    317
  64. #define    tWOOD    318
  65. #define    tCONTRAST    319
  66. #define    tCUTOFF    320
  67. #define    tCLOUD    321
  68. #define    tAMBIENT    322
  69. #define    tDIFFUSE    323
  70. #define    tREFLECT    324
  71. #define    tTRANSP    325
  72. #define    tSPECULAR    326
  73. #define    tSPECPOW    327
  74. #define    tINDEX    328
  75. #define    tATMOSPHERE    329
  76. #define    tNOSHADOW    330
  77. #define    tAREA    331
  78. #define    tTRANSLU    332
  79. #define    tTORUS    333
  80. #define    tEYESEP    334
  81. #define    tSHADOWTRANSP    335
  82. #define    tREPORT    336
  83. #define    tVERBOSE    337
  84. #define    tQUIET    338
  85. #define    tWINDOW    339
  86. #define    tCROP    340
  87. #define    tSTRIPE    341
  88. #define    tMAP    342
  89. #define    tUV    343
  90. #define    tSPHERICAL    344
  91. #define    tCYLINDRICAL    345
  92. #define    tPLANAR    346
  93. #define    tIMAGE    347
  94. #define    tSMOOTH    348
  95. #define    tCOMPONENT    349
  96. #define    tTEXTSURF    350
  97. #define    tRANGE    351
  98. #define    tTILE    352
  99. #define    tSTARTTIME    353
  100. #define    tFRAMELENGTH    354
  101. #define    tNAME    355
  102. #define    tFILTER    356
  103. #define    tGAUSS    357
  104. #define    tBODY    358
  105. #define    tSAMPLE    359
  106. #define    tEXTINCT    360
  107. #define    tWINDY    361
  108. #define    tMOUNT    362
  109. #define    tSHUTTER    363
  110. #define    tFRAMES    364
  111. #define    UMINUS    365
  112.  
  113.  
  114. #include "rayshade.h"
  115.  
  116. #include "symtab.h"
  117. #include "builtin.h"
  118.  
  119. #include "atmosphere.h"
  120. #include "surface.h"
  121. #include "texture.h"
  122. #include "image.h"
  123. #include "geom.h"
  124. #include "light.h"
  125. #include "options.h"
  126. #include "stats.h"
  127. #include "viewing.h"
  128.  
  129. #include "blob.h"
  130. #include "box.h"
  131. #include "cone.h"
  132. #include "csg.h"
  133. #include "cylinder.h"
  134. #include "disc.h"
  135. #include "grid.h"
  136. #include "hf.h"
  137. #include "instance.h"
  138. #include "list.h"
  139. #include "plane.h"
  140. #include "poly.h"
  141. #include "sphere.h"
  142. #include "torus.h"
  143. #include "triangle.h"
  144.  
  145. #include "point.h"
  146. #include "infinite.h"
  147. #include "spot.h"
  148. #include "jittered.h"
  149. #include "extended.h"
  150.  
  151. #include "blotch.h"
  152. #include "bump.h"
  153. #include "checker.h"
  154. #include "cloud.h"
  155. #include "fbm.h"
  156. #include "fbmbump.h"
  157. #include "gloss.h"
  158. #include "imagetext.h"
  159. #include "marble.h"
  160. #include "mount.h"
  161. #include "sky.h"
  162. #include "stripe.h"
  163. #include "windy.h"
  164. #include "wood.h"
  165.  
  166. #include "fog.h"
  167. #include "fogdeck.h"
  168. #include "mist.h"
  169.  
  170. #include "rotate.h"
  171. #include "scale.h"
  172. #include "translate.h"
  173. #include "xform.h"
  174.  
  175. Geom *NewAggregate();
  176. char yyfilename[BUFSIZ];            /* Input filename */
  177. GeomList *Defstack;                /* Geom definition stack. */
  178. int Npoints = 0;                /* # of points in Polypoints */
  179. Surface *tmpsurf;                /* Working surface */
  180. SurfList *CurSurf;
  181. Texture *CurText;                /* Working list of textures */
  182. ImageText *Imagetext;                /* Working image texture */
  183. Trans *TransHead, *TransTail;            /* Linked list of current transformations */
  184. Atmosphere *CurEffect = (Atmosphere *)NULL;    /* Current atmos. effects */
  185. PointList *Polypoints;                /* List of vertices */
  186. MetaList *Metapoints, *Metapoint;
  187. extern FILE *yyin;                /* input file pointer */
  188. int yylineno;                /* Current line # in file */
  189. extern Atmosphere *AtmosEffects;        /* atmospheric effects */
  190. extern Medium TopMedium;            /* "air" */
  191. extern void    GeomAddToDefined(),
  192.         LightAddToDefined(),
  193.         SurfaceAddToDefined();
  194. extern Surface    *SurfaceGetNamed();
  195. extern Geom     *GeomGetNamed();
  196.  
  197. /*
  198.  * Issue error message containing filename and line number, and exit.
  199.  */
  200. /*VARARGS1*/
  201. yyerror(s, pat1, pat2)
  202. char *s, *pat1, *pat2;
  203. {
  204.     fprintf(stderr,"%s: Error: %s: line %d: ", Options.progname,
  205.             yyfilename, yylineno);
  206.     fprintf(stderr, s, pat1, pat2);
  207.     if (*s && s[strlen(s) -1] != '\n')
  208.         /* YACC doesn't put newlines on error messages. */
  209.         fprintf(stderr,"\n");
  210.     fflush(stderr);
  211.     exit(1);
  212. }
  213.  
  214.  
  215. typedef union {
  216.     char *c;
  217.     int i;
  218.     Float d;
  219.     Vector v;
  220.     Vec2d uv;
  221.     Color col;
  222.     Atmosphere *atmos;
  223.     Light *light;
  224.     Surface *surf;
  225.     Geom *obj;
  226.     Texture *text;
  227.     Mapping *map;
  228.     Trans *trans;
  229.     Expr *e;
  230.     SymtabEntry *sym;
  231. } YYSTYPE;
  232.  
  233. #ifndef YYLTYPE
  234. typedef
  235.   struct yyltype
  236.     {
  237.       int timestamp;
  238.       int first_line;
  239.       int first_column;
  240.       int last_line;
  241.       int last_column;
  242.       char *text;
  243.    }
  244.   yyltype;
  245.  
  246. #define YYLTYPE yyltype
  247. #endif
  248.  
  249. #include <stdio.h>
  250.  
  251. #ifndef __STDC__
  252. #define const
  253. #endif
  254.  
  255.  
  256.  
  257. #define    YYFINAL        528
  258. #define    YYFLAG        -32768
  259. #define    YYNTBASE    120
  260.  
  261. #define YYTRANSLATE(x) ((unsigned)(x) <= 365 ? yytranslate[x] : 238)
  262.  
  263. static const char yytranslate[] = {     0,
  264.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  265.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  266.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  267.      2,     2,     2,     2,     2,     2,   114,     2,     2,   117,
  268.    118,   112,   110,   119,   111,     2,   113,     2,     2,     2,
  269.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  270.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  271.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  272.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  273.      2,     2,     2,   116,     2,     2,     2,     2,     2,     2,
  274.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  275.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  276.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  277.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  278.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  279.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  280.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  281.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  282.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  283.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  284.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  285.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  286.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  287.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  288.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  289.      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
  290.      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
  291.     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
  292.     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
  293.     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
  294.     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
  295.     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
  296.     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
  297.     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
  298.     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
  299.     96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
  300.    106,   107,   108,   109,   115
  301. };
  302.  
  303. #if YYDEBUG != 0
  304. static const short yyrline[] = { 0,
  305.    179,   180,   182,   183,   184,   185,   186,   187,   188,   189,
  306.    190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
  307.    200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
  308.    210,   211,   212,   214,   224,   232,   251,   256,   258,   259,
  309.    261,   267,   268,   269,   270,   271,   272,   273,   274,   275,
  310.    276,   277,   279,   286,   287,   289,   290,   291,   292,   294,
  311.    295,   297,   323,   327,   331,   335,   339,   343,   348,   352,
  312.    356,   360,   364,   368,   372,   384,   388,   392,   397,   399,
  313.    404,   405,   407,   412,   417,   421,   426,   430,   434,   448,
  314.    460,   461,   465,   484,   494,   503,   513,   530,   551,   564,
  315.    569,   574,   579,   585,   592,   599,   605,   610,   614,   619,
  316.    623,   627,   632,   636,   640,   649,   655,   663,   678,   688,
  317.    695,   700,   705,   707,   709,   711,   713,   715,   720,   725,
  318.    731,   737,   742,   747,   751,   756,   760,   768,   776,   780,
  319.    784,   788,   792,   798,   803,   808,   809,   814,   815,   816,
  320.    818,   829,   839,   844,   850,   855,   864,   870,   877,   886,
  321.    887,   889,   890,   891,   892,   893,   894,   895,   896,   897,
  322.    898,   899,   901,   908,   915,   922,   928,   934,   941,   948,
  323.    955,   962,   971,   978,   984,   989,   999,  1000,  1002,  1013,
  324.   1033,  1059,  1066,  1067,  1068,  1070,  1075,  1080,  1086,  1090,
  325.   1094,  1099,  1110,  1117,  1124,  1131,  1138,  1147,  1158,  1170,
  326.   1177,  1184,  1193,  1194,  1196,  1209,  1220,  1225,  1235,  1236,
  327.   1238,  1244,  1248,  1252,  1257,  1264,  1271,  1277,  1278,  1283,
  328.   1288,  1292,  1297,  1302,  1307,  1312,  1317,  1323,  1327,  1331,
  329.   1335,  1339,  1343,  1347,  1351,  1355,  1360,  1362,  1364,  1368,
  330.   1372,  1375,  1376,  1385,  1389,  1391,  1395,  1399,  1403,  1407,
  331.   1413,  1419,  1425,  1432,  1436,  1440,  1444,  1448,  1452,  1456,
  332.   1460,  1464,  1468,  1469,  1471,  1473,  1474,  1476
  333. };
  334.  
  335. static const char * const yytname[] = {     0,
  336. "error","$illegal.","tFLOAT","tSTRING","tFILENAME","tAPERTURE","tAPPLYSURF","tBACKGROUND","tBLOB","tBLOTCH",
  337. "tBOX","tBUMP","tCONE","tCYL","tDIRECTIONAL","tCURSURF","tEXTENDED","tEYEP","tFBM","tFBMBUMP",
  338. "tFOCALDIST","tFOG","tFOGDECK","tFOV","tGLOSS","tGRID","tHEIGHTFIELD","tLIGHT","tLIST","tLOOKP",
  339. "tMARBLE","tMAXDEPTH","tMIST","tJITTER","tNOJITTER","tDEFINE","tOBJECT","tOUTFILE","tSKY","tDISC",
  340. "tDIFFERENCE","tUNION","tINTERSECT","tPLANE","tPOINT","tPOLY","tROTATE","tSPOT","tPRINT","tSCALE",
  341. "tSCREEN","tSPHERE","tSURFACE","tTHRESH","tTRANSLATE","tTRANSFORM","tTRIANGLE","tTRIANGLEUV","tUP","tEND",
  342. "tTEXTURE","tCHECKER","tWOOD","tCONTRAST","tCUTOFF","tCLOUD","tAMBIENT","tDIFFUSE","tREFLECT","tTRANSP",
  343. "tSPECULAR","tSPECPOW","tINDEX","tATMOSPHERE","tNOSHADOW","tAREA","tTRANSLU","tTORUS","tEYESEP","tSHADOWTRANSP",
  344. "tREPORT","tVERBOSE","tQUIET","tWINDOW","tCROP","tSTRIPE","tMAP","tUV","tSPHERICAL","tCYLINDRICAL",
  345. "tPLANAR","tIMAGE","tSMOOTH","tCOMPONENT","tTEXTSURF","tRANGE","tTILE","tSTARTTIME","tFRAMELENGTH","tNAME",
  346. "tFILTER","tGAUSS","tBODY","tSAMPLE","tEXTINCT","tWINDY","tMOUNT","tSHUTTER","tFRAMES","'+'",
  347. "'-'","'*'","'/'","'%'","UMINUS","'^'","'('","')'","','","Items"
  348. };
  349. #endif
  350.  
  351. static const short yyr1[] = {     0,
  352.    120,   120,   121,   121,   121,   121,   121,   121,   121,   121,
  353.    121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
  354.    121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
  355.    121,   121,   121,   122,   123,   124,   125,   125,   126,   126,
  356.    127,   128,   128,   128,   128,   128,   128,   128,   128,   128,
  357.    128,   128,   129,   130,   130,   131,   131,   131,   131,   132,
  358.    132,   133,   134,   134,   134,   134,   134,   134,   134,   134,
  359.    134,   134,   134,   134,   134,   134,   134,   134,   135,   136,
  360.    137,   137,   138,   138,   138,   138,   138,   138,   139,   139,
  361.    140,   140,   141,   142,   142,   142,   142,   142,   143,   144,
  362.    145,   146,   146,   147,   147,   147,   148,   148,   148,   148,
  363.    149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
  364.    158,   158,   158,   159,   159,   160,   160,   161,   162,   163,
  365.    164,   165,   166,   167,   167,   167,   167,   167,   168,   168,
  366.    168,   168,   168,   169,   170,   171,   171,   172,   172,   172,
  367.    173,   173,   174,   174,   175,   176,   177,   178,   178,   179,
  368.    179,   180,   180,   180,   180,   180,   180,   180,   180,   180,
  369.    180,   180,   181,   182,   183,   184,   185,   186,   187,   188,
  370.    189,   190,   191,   192,   192,   193,   194,   194,   195,   196,
  371.    197,   198,   199,   199,   199,   200,   201,   202,   203,   203,
  372.    203,   204,   205,   206,   207,   208,   209,   209,   209,   210,
  373.    211,   212,   213,   213,   214,   215,   216,   216,   217,   217,
  374.    218,   219,   219,   219,   220,   221,   222,   223,   223,   224,
  375.    225,   225,   225,   225,   225,   225,   225,   226,   226,   226,
  376.    226,   226,   226,   226,   226,   226,   227,   227,   228,   229,
  377.    230,   231,   231,   232,   232,   233,   234,   234,   234,   234,
  378.    234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
  379.    234,   234,   235,   235,   235,   236,   236,   237
  380. };
  381.  
  382. static const short yyr2[] = {     0,
  383.      0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
  384.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  385.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  386.      1,     1,     1,     1,     2,     2,     1,     1,     1,     1,
  387.      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  388.      1,     1,     3,     2,     0,     1,     1,     1,     1,     2,
  389.      0,     3,     2,     3,     2,     1,     2,     7,     8,     6,
  390.      1,     2,     8,     7,     1,     5,     9,     4,     2,     2,
  391.      2,     0,     2,     3,     2,     3,     1,     1,     3,     2,
  392.      2,     0,     1,     4,     4,     5,    10,    13,     3,     2,
  393.      2,     3,     2,     3,     3,     2,     3,     2,     3,     2,
  394.      2,     2,     2,     2,     4,     2,     3,     5,     5,     5,
  395.      4,     4,     3,     1,     0,     1,     0,     2,     2,     2,
  396.      2,     2,     1,     1,     2,     3,     7,     8,     3,     3,
  397.      4,     5,     7,     2,     2,     1,     0,     1,     1,     1,
  398.      1,     1,     3,     3,     1,     1,     2,     3,     2,     2,
  399.      0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
  400.      1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
  401.      2,     4,     1,     3,     2,     3,     0,     2,     1,     1,
  402.      3,     1,     1,     1,     1,     1,     4,     1,     1,     1,
  403.      1,     6,     5,     4,     5,     4,     5,     8,    11,     4,
  404.      6,     4,     0,     2,     5,     2,     2,     3,     2,     0,
  405.      1,     5,     3,     8,     3,     3,     2,     1,     0,     2,
  406.      1,     1,     4,     1,     4,     1,     4,     1,     1,     1,
  407.      1,     1,     1,     1,     1,     1,     1,     1,     2,     3,
  408.      1,     1,     1,     1,     1,     3,     1,     1,     4,     6,
  409.      8,    10,    12,     3,     3,     3,     3,     3,     3,     2,
  410.      2,     3,     1,     2,     2,     1,     1,     1
  411. };
  412.  
  413. static const short yydefact[] = {     1,
  414.      0,     0,     0,     0,   147,   147,   147,   147,     0,     0,
  415.      0,     0,     0,     0,   196,     0,     0,     0,     0,     0,
  416.    147,   201,   199,   200,   147,   147,     0,     0,   147,     0,
  417.    147,   147,     0,     0,     0,   220,   147,     0,   133,   125,
  418.      0,     0,     0,     0,     0,     0,     0,     0,     0,     2,
  419.     25,    34,    61,    92,    37,    39,    41,    26,    38,     3,
  420.      4,     5,     6,    15,    16,    30,    29,    32,    31,    17,
  421.     18,     7,     8,     9,    10,    11,    12,    13,    14,    19,
  422.     20,    21,   134,     0,    23,    22,    49,    48,    40,   190,
  423.     55,   192,   193,   194,   195,   198,    47,    46,    43,    50,
  424.     44,    45,    42,    51,    52,    24,    27,    33,    28,   273,
  425.      0,     0,     0,   128,   253,   252,   151,   152,     0,     0,
  426.      0,     0,     0,     0,     0,   183,     0,     0,     0,   145,
  427.    148,   149,     0,     0,   150,   161,   162,   163,   164,   166,
  428.    169,   165,   167,   168,   170,   171,   172,   132,     0,     0,
  429.    146,     0,     0,     0,    92,     0,   129,   103,     0,   251,
  430.    276,   277,     0,   185,   248,   144,   247,   100,   131,     0,
  431.     90,     0,   276,   216,     0,     0,   187,   249,     0,     0,
  432.    159,     0,     0,   101,     0,   116,   217,   220,     0,   130,
  433.    124,   127,     0,     0,   111,   113,     0,   108,   110,   106,
  434.    114,   112,    35,    36,   135,     0,     0,     0,     0,     0,
  435.      0,   275,   274,   257,   258,     0,     0,     0,     0,     0,
  436.    173,   174,   179,   180,   175,   178,   181,     0,   176,   177,
  437.    161,   161,   157,     0,   213,     0,     0,     0,    99,     0,
  438.    102,     0,   184,   136,   250,   255,   254,    89,     0,     0,
  439.    186,   117,     0,   158,     0,     0,     0,     0,     0,     0,
  440.    219,   221,   218,     0,   126,   123,     0,     0,    53,   107,
  441.    109,   104,   105,     0,    60,     0,     0,     0,     0,    91,
  442.     93,   140,     0,   139,     0,     0,   191,    56,    59,    54,
  443.     58,    57,   271,   270,     0,     0,     0,     0,     0,     0,
  444.      0,   256,     0,     0,   153,   154,   160,   225,   212,   206,
  445.      0,     0,   226,   197,     0,   210,   188,   189,   204,     0,
  446.      0,   115,     0,     0,     0,     0,   121,   122,     0,     0,
  447.      0,     0,     0,     0,     0,    66,     0,     0,    71,     0,
  448.      0,     0,     0,     0,    92,    75,    82,     0,     0,     0,
  449.      0,   141,     0,     0,   264,   265,   266,   267,   268,   269,
  450.    272,     0,   182,   214,     0,     0,   203,   205,   207,     0,
  451.      0,   223,     0,     0,     0,   120,   118,   119,     0,    65,
  452.      0,     0,    72,    67,     0,    63,     0,     0,    80,     0,
  453.      0,    62,    79,     0,     0,     0,     0,   142,     0,   259,
  454.      0,     0,   202,     0,     0,   227,     0,     0,   211,    64,
  455.      0,     0,     0,     0,     0,     0,     0,     0,    87,     0,
  456.      0,     0,     0,    81,    88,     0,    94,    95,     0,     0,
  457.      0,     0,     0,     0,     0,     0,   222,     0,     0,     0,
  458.      0,   229,     0,    78,   231,   232,   234,   236,   230,   245,
  459.    238,   239,   242,   243,   241,   244,   246,   240,    83,    85,
  460.      0,     0,    96,     0,   143,   137,   260,     0,     0,   208,
  461.      0,     0,     0,     0,     0,     0,    76,   228,     0,     0,
  462.      0,     0,    86,    84,     0,   138,     0,   215,     0,     0,
  463.      0,    70,     0,     0,     0,     0,     0,     0,     0,   261,
  464.      0,     0,   224,    68,    74,     0,     0,   233,   235,   237,
  465.      0,     0,   209,    69,    73,     0,     0,   262,     0,    77,
  466.     97,     0,     0,   263,     0,    98,     0,     0
  467. };
  468.  
  469. static const short yydefgoto[] = {     1,
  470.     50,    51,    52,    53,    54,    55,    56,    57,    58,   211,
  471.    290,   203,   275,   345,   346,   347,   393,   424,    59,   204,
  472.    280,   281,    60,    61,    62,    63,    64,    65,    66,    67,
  473.     68,    69,    70,    71,    72,    73,    74,    75,   192,   266,
  474.     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
  475.    150,   151,   131,   132,   133,   134,   135,    86,   233,   136,
  476.    137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
  477.    147,    87,    88,   251,   317,    89,    90,    91,    92,    93,
  478.     94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
  479.    104,   105,   309,   364,   106,   107,   187,   261,   262,   165,
  480.    155,   370,   477,   425,   449,   459,   166,   108,   109,   159,
  481.    156,   245,   115,   219,   116,   164,   220
  482. };
  483.  
  484. static const short yypact[] = {-32768,
  485.    925,    32,   640,    32,   640,   640,   640,   640,    32,    32,
  486.     32,    32,   522,    32,-32768,    32,    32,     7,   774,    45,
  487.    640,-32768,-32768,-32768,   640,   640,    32,    32,   640,    13,
  488.    640,   640,    32,    32,    32,    32,   640,    32,-32768,   -63,
  489.     32,    32,    32,    32,    20,   -10,    32,    32,    32,-32768,
  490. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  491. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  492. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  493. -32768,-32768,   -37,     3,-32768,-32768,-32768,-32768,-32768,-32768,
  494. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  495. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  496.     41,    54,    27,-32768,-32768,-32768,   842,  1032,    32,    32,
  497.     32,    32,    32,    32,    32,-32768,    32,    32,    32,-32768,
  498. -32768,-32768,  1076,  1076,-32768,-32768,-32768,-32768,-32768,-32768,
  499. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    32,    32,
  500. -32768,    32,    32,    32,-32768,    32,-32768,    32,    32,-32768,
  501.    141,-32768,    45,-32768,-32768,   -12,    32,-32768,-32768,    32,
  502.    788,    72,-32768,-32768,    32,    32,-32768,-32768,    32,    32,
  503.    640,    32,    32,-32768,    32,-32768,   -17,-32768,    32,-32768,
  504. -32768,    -1,    32,    32,-32768,-32768,  1084,    32,    32,    35,
  505. -32768,-32768,    25,    40,-32768,    32,    32,    32,    32,    32,
  506.   1034,-32768,-32768,-32768,   -29,    27,    27,    27,    58,   -23,
  507. -32768,-32768,-32768,-32768,-32768,-32768,-32768,    32,-32768,-32768,
  508. -32768,-32768,  1076,    32,-32768,    32,    32,    32,    40,    32,
  509. -32768,    32,-32768,-32768,-32768,-32768,-32768,-32768,    32,    32,
  510.     32,-32768,    32,-32768,    32,    32,    32,    32,    32,    32,
  511. -32768,-32768,   -17,    32,-32768,    24,    32,    32,-32768,-32768,
  512. -32768,-32768,-32768,   976,-32768,    32,    32,    32,    32,-32768,
  513. -32768,-32768,    32,-32768,    32,    32,-32768,-32768,-32768,-32768,
  514. -32768,-32768,   -19,   -19,   202,    27,    27,    27,    27,    27,
  515.     27,-32768,    27,    32,  1076,  1076,-32768,-32768,    32,-32768,
  516.     32,    32,-32768,-32768,    32,-32768,-32768,-32768,-32768,    32,
  517.     32,-32768,    32,    32,    32,    32,    45,-32768,    32,    32,
  518.     32,    32,    32,    32,    32,    45,    32,   640,-32768,    32,
  519.    640,    45,    32,    45,-32768,-32768,-32768,    32,    32,    32,
  520.     32,-32768,    32,    32,-32768,   -60,   -60,   -19,   -19,   -19,
  521.    -19,   158,-32768,-32768,    32,    32,-32768,-32768,    32,    32,
  522.     32,-32768,    32,    32,    32,-32768,-32768,-32768,   640,-32768,
  523.     32,    32,-32768,-32768,    32,-32768,    32,    32,-32768,    32,
  524.     32,    40,   134,    32,    32,    32,    32,    32,    32,-32768,
  525.     27,    32,-32768,    32,    32,-32768,    32,    32,-32768,-32768,
  526.     32,    32,    32,    32,    32,    32,    32,    21,-32768,    -5,
  527.    640,    32,    32,-32768,-32768,    32,-32768,-32768,    32,    32,
  528.     32,   177,    32,    32,    32,    32,-32768,    32,    32,    32,
  529.     32,    12,    32,-32768,-32768,    32,    32,    32,-32768,-32768,
  530. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  531.     32,    32,-32768,    32,-32768,    53,-32768,    27,    32,-32768,
  532.     32,    32,    32,    32,    32,    32,-32768,-32768,    32,    32,
  533.     32,    32,-32768,-32768,    32,-32768,   442,-32768,    32,    32,
  534.     32,-32768,    32,    32,    32,    32,    32,    32,    32,-32768,
  535.     27,    32,-32768,    45,-32768,    32,    32,-32768,-32768,-32768,
  536.     32,   456,-32768,-32768,-32768,    32,    32,-32768,    27,-32768,
  537.     32,   281,    32,-32768,    32,-32768,   100,-32768
  538. };
  539.  
  540. static const short yypgoto[] = {-32768,
  541. -32768,  -104,   -82,-32768,-32768,-32768,-32768,-32768,   -95,-32768,
  542. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -152,
  543. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  544. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  545. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   -80,
  546.     52,   111,-32768,-32768,-32768,-32768,-32768,   -79,  -157,  -120,
  547. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  548. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  549. -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
  550. -32768,-32768,-32768,-32768,-32768,-32768,   -59,-32768,-32768,    39,
  551.    327,  -431,-32768,  -309,-32768,-32768,   101,-32768,-32768,    44,
  552.     -2,   405,   272,  -195,   355,    17,-32768
  553. };
  554.  
  555.  
  556. #define    YYLAST        1181
  557.  
  558.  
  559. static const short yytable[] = {   114,
  560.    198,   149,   239,   471,   258,   259,   450,   157,   158,   160,
  561.    170,   167,   231,   232,   160,   260,   181,   206,   191,   207,
  562.    293,   294,   295,   197,   178,   160,   110,   173,   162,   214,
  563.    215,   185,   167,   160,   110,   190,   174,   205,   160,   194,
  564.    195,   196,   148,   212,   160,   201,   160,   208,   173,   162,
  565.    209,   298,   299,   300,   244,   301,   213,   152,   153,   154,
  566.    169,   451,   452,   453,   454,   455,   456,   457,   272,   273,
  567.    513,   179,   175,   305,   306,   248,   176,   177,   210,   188,
  568.    180,   265,   182,   183,   193,   274,   276,  -278,   189,   277,
  569.    200,   199,   202,   303,   278,   279,   301,   458,   418,   528,
  570.    356,   357,   358,   359,   360,   361,   288,   362,   445,   446,
  571.    447,   448,   307,   130,   269,   289,   149,   149,   223,   224,
  572.    149,   226,   227,   163,   228,   149,   230,   486,   263,   172,
  573.    291,   292,   478,   111,   112,   186,   216,   217,     0,     0,
  574.    113,   111,   112,   218,  -151,  -151,   234,   235,   113,     0,
  575.    237,   238,     0,   240,     0,   241,   160,   221,   222,     0,
  576.      0,   225,     0,     0,   234,     0,   229,   296,   297,   298,
  577.    299,   300,   249,   301,     0,   302,   160,   253,     0,   243,
  578.      0,     0,   257,     0,   307,   307,   264,     0,     0,     0,
  579.    160,   268,   392,     0,     0,   270,   271,     0,     0,     0,
  580.      0,     0,   242,     0,   283,   432,     0,  -155,  -155,  -155,
  581.   -155,  -155,  -155,  -155,     0,  -155,     0,  -155,     0,     0,
  582.    418,     0,   252,     0,     0,   149,   419,   420,   421,   422,
  583.    423,   308,     0,     0,     0,     0,   267,   313,     0,   160,
  584.      0,     0,     0,  -155,     0,  -155,     0,     0,     0,     0,
  585.      0,     0,     0,     0,   322,   149,   324,   149,     0,     0,
  586.      0,   326,     0,   160,   160,   330,   304,   296,   297,   298,
  587.    299,   300,   487,   301,     0,   400,   401,     0,     0,     0,
  588.      0,     0,   328,     0,     0,   314,   296,   297,   298,   299,
  589.    300,   254,   301,     0,   467,   468,   323,     0,   325,     0,
  590.      0,   363,     0,     0,     0,   512,   365,     0,   366,   327,
  591.    329,   296,   297,   298,   299,   300,     0,   301,   371,   355,
  592.    149,   373,   149,   522,     0,     0,   160,   378,   379,   380,
  593.    381,   382,   383,     0,   385,     0,     0,   387,     0,     0,
  594.    390,     0,   168,   376,     0,     0,     0,     0,     0,     0,
  595.    398,   160,   384,     0,     0,     0,     0,     0,   389,   184,
  596.    391,   372,   402,   374,     0,     0,     0,     0,   406,     0,
  597.      0,   408,   377,     0,     0,     0,     0,     0,   411,   412,
  598.      0,     0,   413,     0,   414,   415,     0,   416,   417,     0,
  599.    296,   297,   298,   299,   300,   430,   301,   399,   524,   433,
  600.      0,     0,     0,     0,   436,   437,     0,     0,   438,   439,
  601.    440,   441,   442,   443,   444,     0,     0,     0,     0,   461,
  602.    462,     0,     0,     0,     0,     0,     0,   465,   160,     0,
  603.    469,     0,   371,   160,     0,   473,   474,   160,   160,     0,
  604.    479,   246,     0,     0,     0,     0,     0,     0,   386,     0,
  605.      0,   388,     0,     0,     0,     0,     0,     0,   483,   484,
  606.      0,     0,     0,     0,     0,     0,   488,     0,     0,   149,
  607.    160,   160,   493,   494,   466,     0,   160,     0,   236,   472,
  608.      0,     0,     0,   475,   476,     0,     0,   149,   504,   410,
  609.    505,   506,   507,     0,     0,     0,     0,     0,     0,   371,
  610.      0,     0,   250,   515,   516,     0,     0,     0,   255,   256,
  611.    490,     0,     0,   520,     0,     0,   491,   492,     0,     0,
  612.    514,     0,   495,     0,   247,   161,   162,     0,   503,     0,
  613.      0,   460,   282,     0,   284,   285,   286,   118,     0,     0,
  614.      0,     0,     0,     0,     0,     0,     0,   246,   246,   246,
  615.    246,   296,   297,   298,   299,   300,     0,   301,     0,   500,
  616.    501,     0,   310,   311,   312,   296,   297,   298,   299,   300,
  617.      0,   301,     0,   518,   519,   315,   316,   318,     0,   319,
  618.      0,   320,   321,     0,     0,     0,     0,     0,   119,   120,
  619.    121,   122,   123,   124,   125,     0,   126,     0,   127,     0,
  620.      0,     0,     0,     0,     0,     0,     0,     0,     0,   352,
  621.      0,   353,   354,     0,     0,     0,     0,     0,     0,   246,
  622.    246,   246,   246,     0,   128,     0,   129,     0,     0,     0,
  623.    247,   247,   247,   247,     0,     0,     0,     0,   367,     0,
  624.      0,   368,     0,   117,     0,     0,   369,     0,     0,     0,
  625.      0,     0,   375,     0,     0,   118,     0,     0,     0,     0,
  626.      0,     0,     0,     0,     0,   246,   246,   246,   246,     0,
  627.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  628.    348,   349,   350,   351,     0,     0,     0,     0,     0,     0,
  629.      0,     0,   403,     0,     0,   404,   405,   246,     0,   407,
  630.    246,   409,   247,   247,   247,   247,   119,   120,   121,   122,
  631.    123,   124,   125,     0,   126,     0,   127,     0,     0,     0,
  632.      0,     0,     0,     0,     0,   431,     0,     0,     0,     0,
  633.    434,   435,     0,     0,     0,   246,     0,     0,     0,     0,
  634.      0,     0,   128,     0,   129,     0,     0,     0,   247,   247,
  635.    247,   247,   394,   395,   396,   397,   246,     0,     0,     0,
  636.    470,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  637.    246,     0,   480,   481,   482,     0,     0,   171,     0,     0,
  638.    247,     0,   246,   247,     0,     0,     0,     0,   246,   118,
  639.      0,  -151,   246,     0,   246,     0,   246,   489,   426,   427,
  640.    428,   429,     0,     0,     0,     0,   496,   497,   498,     0,
  641.      0,     0,     0,     0,     0,   502,     0,     0,   247,     0,
  642.      0,     0,   508,   509,   510,     0,     0,     0,     0,     0,
  643.    463,     0,     0,   464,     0,     0,     0,     0,     0,   247,
  644.    119,   120,   121,   122,   123,   124,   125,     0,   126,     0,
  645.    127,     0,     0,   247,  -155,  -155,  -155,  -155,  -155,  -155,
  646.   -155,     0,  -155,     0,  -155,   247,     0,     0,   485,     0,
  647.      0,   247,     0,     0,     0,   247,   128,   247,   129,   247,
  648.      0,     0,     0,     0,     0,     0,     0,     0,     0,   499,
  649.   -155,     0,  -155,     0,     0,     0,     0,     0,     0,     0,
  650.      0,     0,     0,   511,     0,     0,     0,     0,  -155,  -155,
  651.   -155,  -155,  -155,  -155,  -155,   517,  -155,     0,  -155,     0,
  652.      0,   521,     0,     0,   527,   523,     0,   525,     0,   526,
  653.      2,     3,     4,     5,     0,     6,     0,     7,     8,     0,
  654.      0,     0,     9,     0,  -155,    10,  -155,     0,    11,     0,
  655.     12,    13,    14,    15,    16,     0,    17,     0,     0,     0,
  656.     18,    19,    20,     0,    21,    22,    23,    24,    25,     0,
  657.     26,     0,     0,    27,     0,    28,    29,    30,     0,     0,
  658.      0,    31,    32,    33,     0,   331,     0,   332,    34,    35,
  659.      0,     0,     0,     0,   333,   334,     0,     0,    36,     0,
  660.    335,     0,    37,    38,    39,    40,   336,     0,    41,    42,
  661.      0,     0,     0,     0,   337,     0,     0,     0,     0,     0,
  662.      0,     0,    43,    44,    45,    46,     0,     0,    47,     0,
  663.      0,     0,    48,    49,     0,     0,     0,   338,   339,     0,
  664.      3,   340,     5,     0,     6,     0,     7,     8,     0,     0,
  665.      0,     0,     0,     0,     0,     0,     0,     0,     0,    12,
  666.     13,   341,    15,     0,     0,     0,     0,   342,     0,     0,
  667.     19,     0,     0,    21,    22,    23,    24,    25,     0,    26,
  668.      0,   343,   344,     0,     0,    29,    30,     0,     0,     0,
  669.     31,    32,     5,   287,     6,     0,     7,     8,  -156,  -156,
  670.   -156,  -156,  -156,  -156,  -156,     0,  -156,     0,  -156,    12,
  671.     13,    37,    15,     0,     0,     0,     0,     0,     0,     0,
  672.     19,     0,     0,    21,    22,    23,    24,    25,     0,    26,
  673.      0,     0,     0,    45,  -156,    29,  -156,     0,     0,     0,
  674.     31,    32,   119,   120,   121,   122,   123,   124,   125,     0,
  675.    126,     0,   127,     0,     0,     0,     0,     0,     0,     0,
  676.      0,    37,     0,     0,     0,     0,     0,     0,     0,     0,
  677.      0,     0,     0,     0,     0,     0,     0,     0,   128,     0,
  678.    129
  679. };
  680.  
  681. static const short yycheck[] = {     2,
  682.     11,     4,   155,   435,    22,    23,    12,    10,    11,    12,
  683.      4,    14,   133,   134,    17,    33,     4,    15,    82,    17,
  684.    216,   217,   218,     4,    27,    28,     3,     4,     5,     3,
  685.      4,    34,    35,    36,     3,    38,    20,    75,    41,    42,
  686.     43,    44,     4,     3,    47,    48,    49,    45,     4,     5,
  687.     48,   112,   113,   114,    67,   116,     3,     6,     7,     8,
  688.     17,    67,    68,    69,    70,    71,    72,    73,    34,    35,
  689.    502,    28,    21,   231,   232,     4,    25,    26,    76,    36,
  690.     29,    83,    31,    32,    41,    61,    47,   117,    37,    50,
  691.     47,   102,    49,   117,    55,    56,   116,   103,    87,     0,
  692.    296,   297,   298,   299,   300,   301,   211,   303,    88,    89,
  693.     90,    91,   233,     3,   197,   211,   119,   120,   121,   122,
  694.    123,   124,   125,    13,   127,   128,   129,    75,   188,    19,
  695.    211,   211,   442,   110,   111,    35,   110,   111,    -1,    -1,
  696.    117,   110,   111,   117,     4,     5,   149,   150,   117,    -1,
  697.    153,   154,    -1,   156,    -1,   158,   159,   119,   120,    -1,
  698.     -1,   123,    -1,    -1,   167,    -1,   128,   110,   111,   112,
  699.    113,   114,   175,   116,    -1,   118,   179,   180,    -1,   163,
  700.     -1,    -1,   185,    -1,   305,   306,   189,    -1,    -1,    -1,
  701.    193,   194,   345,    -1,    -1,   198,   199,    -1,    -1,    -1,
  702.     -1,    -1,   159,    -1,   207,   401,    -1,    67,    68,    69,
  703.     70,    71,    72,    73,    -1,    75,    -1,    77,    -1,    -1,
  704.     87,    -1,   179,    -1,    -1,   228,    93,    94,    95,    96,
  705.     97,   234,    -1,    -1,    -1,    -1,   193,   240,    -1,   242,
  706.     -1,    -1,    -1,   103,    -1,   105,    -1,    -1,    -1,    -1,
  707.     -1,    -1,    -1,    -1,   257,   258,   259,   260,    -1,    -1,
  708.     -1,   264,    -1,   266,   267,   268,   228,   110,   111,   112,
  709.    113,   114,   468,   116,    -1,   118,   119,    -1,    -1,    -1,
  710.     -1,    -1,   266,    -1,    -1,   242,   110,   111,   112,   113,
  711.    114,   181,   116,    -1,   118,   119,   258,    -1,   260,    -1,
  712.     -1,   304,    -1,    -1,    -1,   501,   309,    -1,   311,   266,
  713.    267,   110,   111,   112,   113,   114,    -1,   116,   321,   118,
  714.    323,   324,   325,   519,    -1,    -1,   329,   330,   331,   332,
  715.    333,   334,   335,    -1,   337,    -1,    -1,   340,    -1,    -1,
  716.    343,    -1,    16,   327,    -1,    -1,    -1,    -1,    -1,    -1,
  717.    353,   354,   336,    -1,    -1,    -1,    -1,    -1,   342,    33,
  718.    344,   323,   365,   325,    -1,    -1,    -1,    -1,   371,    -1,
  719.     -1,   374,   329,    -1,    -1,    -1,    -1,    -1,   381,   382,
  720.     -1,    -1,   385,    -1,   387,   388,    -1,   390,   391,    -1,
  721.    110,   111,   112,   113,   114,   398,   116,   354,   118,   402,
  722.     -1,    -1,    -1,    -1,   407,   408,    -1,    -1,   411,   412,
  723.    413,   414,   415,   416,   417,    -1,    -1,    -1,    -1,   422,
  724.    423,    -1,    -1,    -1,    -1,    -1,    -1,   430,   431,    -1,
  725.    433,    -1,   435,   436,    -1,   438,   439,   440,   441,    -1,
  726.    443,   170,    -1,    -1,    -1,    -1,    -1,    -1,   338,    -1,
  727.     -1,   341,    -1,    -1,    -1,    -1,    -1,    -1,   461,   462,
  728.     -1,    -1,    -1,    -1,    -1,    -1,   469,    -1,    -1,   472,
  729.    473,   474,   475,   476,   431,    -1,   479,    -1,   152,   436,
  730.     -1,    -1,    -1,   440,   441,    -1,    -1,   490,   491,   379,
  731.    493,   494,   495,    -1,    -1,    -1,    -1,    -1,    -1,   502,
  732.     -1,    -1,   176,   506,   507,    -1,    -1,    -1,   182,   183,
  733.    472,    -1,    -1,   516,    -1,    -1,   473,   474,    -1,    -1,
  734.    504,    -1,   479,    -1,   170,     4,     5,    -1,   490,    -1,
  735.     -1,   421,   206,    -1,   208,   209,   210,    16,    -1,    -1,
  736.     -1,    -1,    -1,    -1,    -1,    -1,    -1,   276,   277,   278,
  737.    279,   110,   111,   112,   113,   114,    -1,   116,    -1,   118,
  738.    119,    -1,   236,   237,   238,   110,   111,   112,   113,   114,
  739.     -1,   116,    -1,   118,   119,   249,   250,   251,    -1,   253,
  740.     -1,   255,   256,    -1,    -1,    -1,    -1,    -1,    67,    68,
  741.     69,    70,    71,    72,    73,    -1,    75,    -1,    77,    -1,
  742.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
  743.     -1,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,   348,
  744.    349,   350,   351,    -1,   103,    -1,   105,    -1,    -1,    -1,
  745.    276,   277,   278,   279,    -1,    -1,    -1,    -1,   312,    -1,
  746.     -1,   315,    -1,     4,    -1,    -1,   320,    -1,    -1,    -1,
  747.     -1,    -1,   326,    -1,    -1,    16,    -1,    -1,    -1,    -1,
  748.     -1,    -1,    -1,    -1,    -1,   394,   395,   396,   397,    -1,
  749.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  750.    276,   277,   278,   279,    -1,    -1,    -1,    -1,    -1,    -1,
  751.     -1,    -1,   366,    -1,    -1,   369,   370,   426,    -1,   373,
  752.    429,   375,   348,   349,   350,   351,    67,    68,    69,    70,
  753.     71,    72,    73,    -1,    75,    -1,    77,    -1,    -1,    -1,
  754.     -1,    -1,    -1,    -1,    -1,   399,    -1,    -1,    -1,    -1,
  755.    404,   405,    -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,
  756.     -1,    -1,   103,    -1,   105,    -1,    -1,    -1,   394,   395,
  757.    396,   397,   348,   349,   350,   351,   485,    -1,    -1,    -1,
  758.    434,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  759.    499,    -1,   446,   447,   448,    -1,    -1,     4,    -1,    -1,
  760.    426,    -1,   511,   429,    -1,    -1,    -1,    -1,   517,    16,
  761.     -1,     4,   521,    -1,   523,    -1,   525,   471,   394,   395,
  762.    396,   397,    -1,    -1,    -1,    -1,   480,   481,   482,    -1,
  763.     -1,    -1,    -1,    -1,    -1,   489,    -1,    -1,   464,    -1,
  764.     -1,    -1,   496,   497,   498,    -1,    -1,    -1,    -1,    -1,
  765.    426,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,   485,
  766.     67,    68,    69,    70,    71,    72,    73,    -1,    75,    -1,
  767.     77,    -1,    -1,   499,    67,    68,    69,    70,    71,    72,
  768.     73,    -1,    75,    -1,    77,   511,    -1,    -1,   464,    -1,
  769.     -1,   517,    -1,    -1,    -1,   521,   103,   523,   105,   525,
  770.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   485,
  771.    103,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  772.     -1,    -1,    -1,   499,    -1,    -1,    -1,    -1,    67,    68,
  773.     69,    70,    71,    72,    73,   511,    75,    -1,    77,    -1,
  774.     -1,   517,    -1,    -1,     0,   521,    -1,   523,    -1,   525,
  775.      6,     7,     8,     9,    -1,    11,    -1,    13,    14,    -1,
  776.     -1,    -1,    18,    -1,   103,    21,   105,    -1,    24,    -1,
  777.     26,    27,    28,    29,    30,    -1,    32,    -1,    -1,    -1,
  778.     36,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
  779.     46,    -1,    -1,    49,    -1,    51,    52,    53,    -1,    -1,
  780.     -1,    57,    58,    59,    -1,    10,    -1,    12,    64,    65,
  781.     -1,    -1,    -1,    -1,    19,    20,    -1,    -1,    74,    -1,
  782.     25,    -1,    78,    79,    80,    81,    31,    -1,    84,    85,
  783.     -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
  784.     -1,    -1,    98,    99,   100,   101,    -1,    -1,   104,    -1,
  785.     -1,    -1,   108,   109,    -1,    -1,    -1,    62,    63,    -1,
  786.      7,    66,     9,    -1,    11,    -1,    13,    14,    -1,    -1,
  787.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    26,
  788.     27,    86,    29,    -1,    -1,    -1,    -1,    92,    -1,    -1,
  789.     37,    -1,    -1,    40,    41,    42,    43,    44,    -1,    46,
  790.     -1,   106,   107,    -1,    -1,    52,    53,    -1,    -1,    -1,
  791.     57,    58,     9,    60,    11,    -1,    13,    14,    67,    68,
  792.     69,    70,    71,    72,    73,    -1,    75,    -1,    77,    26,
  793.     27,    78,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  794.     37,    -1,    -1,    40,    41,    42,    43,    44,    -1,    46,
  795.     -1,    -1,    -1,   100,   103,    52,   105,    -1,    -1,    -1,
  796.     57,    58,    67,    68,    69,    70,    71,    72,    73,    -1,
  797.     75,    -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  798.     -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  799.     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
  800.    105
  801. };
  802. #define YYPURE 1
  803.  
  804. /* BISON template */
  805. /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
  806.  
  807.  
  808. /* Skeleton output parser for bison,
  809.    Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
  810.  
  811.    This program is free software; you can redistribute it and/or modify
  812.    it under the terms of the GNU General Public License as published by
  813.    the Free Software Foundation; either version 1, or (at your option)
  814.    any later version.
  815.  
  816.    This program is distributed in the hope that it will be useful,
  817.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  818.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  819.    GNU General Public License for more details.
  820.  
  821.    You should have received a copy of the GNU General Public License
  822.    along with this program; if not, write to the Free Software
  823.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  824.  
  825.  
  826. #ifdef __GNUC__
  827. #define alloca __builtin_alloca
  828. #else /* Not GNU C.  */
  829. #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__)
  830. #include <alloca.h>
  831. #else
  832. #ifdef MSDOS
  833. #include <malloc.h>
  834. #else
  835. void *alloca(unsigned);
  836. #endif /* MSDOS */
  837. #endif /* Sparc. */
  838. #endif /* Not GNU C. */
  839.  
  840. #ifndef bcopy
  841. #define bcopy(s,d,x) memcpy(d,s,x)
  842. #endif
  843.  
  844. /* This is the parser code that is written into each bison parser
  845.   when the %semantic_parser declaration is not specified in the grammar.
  846.   It was written by Richard Stallman by simplifying the hairy parser
  847.   used when %semantic_parser is specified.  */
  848.  
  849. /* Note: there must be only one dollar sign in this file.
  850.    It is replaced by the list of actions, each action
  851.    as one case of the switch.  */
  852.  
  853. #define yyerrok        (yyerrstatus = 0)
  854. #define yyclearin    (yychar = YYEMPTY)
  855. #define YYEMPTY        -2
  856. #define YYEOF        0
  857. #define YYACCEPT    return(0)
  858. #define YYABORT     return(1)
  859. #define YYERROR        goto yyerrlab1
  860. /* Like YYERROR except do call yyerror.
  861.    This remains here temporarily to ease the
  862.    transition to the new meaning of YYERROR, for GCC.
  863.    Once GCC version 2 has supplanted version 1, this can go.  */
  864. #define YYFAIL        goto yyerrlab
  865. #define YYRECOVERING()  (!!yyerrstatus)
  866. #define YYBACKUP(token, value) \
  867. do                                \
  868.   if (yychar == YYEMPTY && yylen == 1)                \
  869.     { yychar = (token), yylval = (value);            \
  870.       yychar1 = YYTRANSLATE (yychar);                \
  871.       YYPOPSTACK;                        \
  872.       goto yybackup;                        \
  873.     }                                \
  874.   else                                \
  875.     { yyerror ("syntax error: cannot back up","",""); YYERROR; }    \
  876. while (0)
  877.  
  878. #define YYTERROR    1
  879. #define YYERRCODE    256
  880.  
  881. #ifndef YYIMPURE
  882. #define YYLEX        yylex()
  883. #endif
  884.  
  885. #ifndef YYPURE
  886. #define YYLEX        yylex(&yylval, &yylloc)
  887. #endif
  888.  
  889. /* If nonreentrant, generate the variables here */
  890.  
  891. #ifndef YYIMPURE
  892.  
  893. int    yychar;            /*  the lookahead symbol        */
  894. YYSTYPE    yylval;            /*  the semantic value of the        */
  895.                 /*  lookahead symbol            */
  896.  
  897. #ifdef YYLSP_NEEDED
  898. YYLTYPE yylloc;            /*  location data for the lookahead    */
  899.                 /*  symbol                */
  900. #endif
  901.  
  902. int yynerrs;            /*  number of parse errors so far       */
  903. #endif  /* YYIMPURE */
  904.  
  905. #if YYDEBUG != 0
  906. int yydebug;            /*  nonzero means print parse trace    */
  907. /* Since this is uninitialized, it does not stop multiple parsers
  908.    from coexisting.  */
  909. #endif
  910.  
  911. /*  YYINITDEPTH indicates the initial size of the parser's stacks    */
  912.  
  913. #ifndef    YYINITDEPTH
  914. #define YYINITDEPTH 200
  915. #endif
  916.  
  917. /*  YYMAXDEPTH is the maximum size the stacks can grow to
  918.     (effective only if the built-in stack extension method is used).  */
  919.  
  920. #if YYMAXDEPTH == 0
  921. #undef YYMAXDEPTH
  922. #endif
  923.  
  924. #ifndef YYMAXDEPTH
  925. #define YYMAXDEPTH 10000
  926. #endif
  927.  
  928. /* This is the most reliable way to avoid incompatibilities
  929.    in available built-in functions on various systems.  */
  930. static void
  931. __yy_bcopy (from, to, count)
  932.      char *from;
  933.      char *to;
  934.      int count;
  935. {
  936.   register char *f = from;
  937.   register char *t = to;
  938.   register int i = count;
  939.  
  940.   while (i-- > 0)
  941.     *t++ = *f++;
  942. }
  943.  
  944.  
  945. int
  946. yyparse()
  947. {
  948.   register int yystate;
  949.   register int yyn;
  950.   register short *yyssp;
  951.   register YYSTYPE *yyvsp;
  952.   int yyerrstatus;    /*  number of tokens to shift before error messages enabled */
  953.   int yychar1;        /*  lookahead token as an internal (translated) token number */
  954.  
  955.   short    yyssa[YYINITDEPTH];    /*  the state stack            */
  956.   YYSTYPE yyvsa[YYINITDEPTH];    /*  the semantic value stack        */
  957.  
  958.   short *yyss = yyssa;        /*  refer to the stacks thru separate pointers */
  959.   YYSTYPE *yyvs = yyvsa;    /*  to allow yyoverflow to reallocate them elsewhere */
  960.  
  961. #ifdef YYLSP_NEEDED
  962.   YYLTYPE *yyls = yylsa;
  963.   YYLTYPE *yylsp;
  964.   YYLTYPE yylsa[YYINITDEPTH];    /*  the location stack            */
  965.  
  966. #define YYPOPSTACK   (yyvsp--, yysp--, yylsp--)
  967. #else
  968. #define YYPOPSTACK   (yyvsp--, yysp--)
  969. #endif
  970.  
  971.   int yystacksize = YYINITDEPTH;
  972.  
  973. #ifndef YYPURE
  974.   int yychar;
  975.   YYSTYPE yylval;
  976.   int yynerrs;
  977. #ifdef YYLSP_NEEDED
  978.   YYLTYPE yylloc;
  979. #endif
  980. #endif
  981.  
  982.   YYSTYPE yyval;        /*  the variable used to return        */
  983.                 /*  semantic values from the action    */
  984.                 /*  routines                */
  985.  
  986.   int yylen;
  987.  
  988. #if YYDEBUG != 0
  989.   if (yydebug)
  990.     fprintf(stderr, "Starting parse\n");
  991. #endif
  992.  
  993.   yystate = 0;
  994.   yyerrstatus = 0;
  995.   yynerrs = 0;
  996.   yychar = YYEMPTY;        /* Cause a token to be read.  */
  997.  
  998.   /* Initialize stack pointers.
  999.      Waste one element of value and location stack
  1000.      so that they stay on the same level as the state stack.  */
  1001.  
  1002.   yyssp = yyss - 1;
  1003.   yyvsp = yyvs;
  1004. #ifdef YYLSP_NEEDED
  1005.   yylsp = yyls;
  1006. #endif
  1007.  
  1008. /* Push a new state, which is found in  yystate  .  */
  1009. /* In all cases, when you get here, the value and location stacks
  1010.    have just been pushed. so pushing a state here evens the stacks.  */
  1011. yynewstate:
  1012.  
  1013.   *++yyssp = yystate;
  1014.  
  1015.   if (yyssp >= yyss + yystacksize - 1)
  1016.     {
  1017.       /* Give user a chance to reallocate the stack */
  1018.       /* Use copies of these so that the &'s don't force the real ones into memory. */
  1019.       YYSTYPE *yyvs1 = yyvs;
  1020.       short *yyss1 = yyss;
  1021. #ifdef YYLSP_NEEDED
  1022.       YYLTYPE *yyls1 = yyls;
  1023. #endif
  1024.  
  1025.       /* Get the current used size of the three stacks, in elements.  */
  1026.       int size = yyssp - yyss + 1;
  1027.  
  1028. #ifdef yyoverflow
  1029.       /* Each stack pointer address is followed by the size of
  1030.      the data in use in that stack, in bytes.  */
  1031.       yyoverflow("parser stack overflow",
  1032.          &yyss1, size * sizeof (*yyssp),
  1033.          &yyvs1, size * sizeof (*yyvsp),
  1034. #ifdef YYLSP_NEEDED
  1035.          &yyls1, size * sizeof (*yylsp),
  1036. #endif
  1037.          &yystacksize);
  1038.  
  1039.       yyss = yyss1; yyvs = yyvs1;
  1040. #ifdef YYLSP_NEEDED
  1041.       yyls = yyls1;
  1042. #endif
  1043. #else /* no yyoverflow */
  1044.       /* Extend the stack our own way.  */
  1045.       if (yystacksize >= YYMAXDEPTH)
  1046.     {
  1047.       yyerror("parser stack overflow","","");
  1048.       return 2;
  1049.     }
  1050.       yystacksize *= 2;
  1051.       if (yystacksize > YYMAXDEPTH)
  1052.     yystacksize = YYMAXDEPTH;
  1053.       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
  1054.       __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
  1055.       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
  1056.       __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
  1057. #ifdef YYLSP_NEEDED
  1058.       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
  1059.       __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
  1060. #endif
  1061. #endif /* no yyoverflow */
  1062.  
  1063.       yyssp = yyss + size - 1;
  1064.       yyvsp = yyvs + size - 1;
  1065. #ifdef YYLSP_NEEDED
  1066.       yylsp = yyls + size - 1;
  1067. #endif
  1068.  
  1069. #if YYDEBUG != 0
  1070.       if (yydebug)
  1071.     fprintf(stderr, "Stack size increased to %d\n", yystacksize);
  1072. #endif
  1073.  
  1074.       if (yyssp >= yyss + yystacksize - 1)
  1075.     YYABORT;
  1076.     }
  1077.  
  1078. #if YYDEBUG != 0
  1079.   if (yydebug)
  1080.     fprintf(stderr, "Entering state %d\n", yystate);
  1081. #endif
  1082.  
  1083.  yybackup:
  1084.  
  1085. /* Do appropriate processing given the current state.  */
  1086. /* Read a lookahead token if we need one and don't already have one.  */
  1087. /* yyresume: */
  1088.  
  1089.   /* First try to decide what to do without reference to lookahead token.  */
  1090.  
  1091.   yyn = yypact[yystate];
  1092.   if (yyn == YYFLAG)
  1093.     goto yydefault;
  1094.  
  1095.   /* Not known => get a lookahead token if don't already have one.  */
  1096.  
  1097.   /* yychar is either YYEMPTY or YYEOF
  1098.      or a valid token in external form.  */
  1099.  
  1100.   if (yychar == YYEMPTY)
  1101.     {
  1102. #if YYDEBUG != 0
  1103.       if (yydebug)
  1104.     fprintf(stderr, "Reading a token: ");
  1105. #endif
  1106.       yychar = YYLEX;
  1107.     }
  1108.  
  1109.   /* Convert token to internal form (in yychar1) for indexing tables with */
  1110.  
  1111.   if (yychar <= 0)        /* This means end of input. */
  1112.     {
  1113.       yychar1 = 0;
  1114.       yychar = YYEOF;        /* Don't call YYLEX any more */
  1115.  
  1116. #if YYDEBUG != 0
  1117.       if (yydebug)
  1118.     fprintf(stderr, "Now at end of input.\n");
  1119. #endif
  1120.     }
  1121.   else
  1122.     {
  1123.       yychar1 = YYTRANSLATE(yychar);
  1124.  
  1125. #if YYDEBUG != 0
  1126.       if (yydebug)
  1127.     fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]);
  1128. #endif
  1129.     }
  1130.  
  1131.   yyn += yychar1;
  1132.   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
  1133.     goto yydefault;
  1134.  
  1135.   yyn = yytable[yyn];
  1136.  
  1137.   /* yyn is what to do for this token type in this state.
  1138.      Negative => reduce, -yyn is rule number.
  1139.      Positive => shift, yyn is new state.
  1140.        New state is final state => don't bother to shift,
  1141.        just return success.
  1142.      0, or most negative number => error.  */
  1143.  
  1144.   if (yyn < 0)
  1145.     {
  1146.       if (yyn == YYFLAG)
  1147.     goto yyerrlab;
  1148.       yyn = -yyn;
  1149.       goto yyreduce;
  1150.     }
  1151.   else if (yyn == 0)
  1152.     goto yyerrlab;
  1153.  
  1154.   if (yyn == YYFINAL)
  1155.     YYACCEPT;
  1156.  
  1157.   /* Shift the lookahead token.  */
  1158.  
  1159. #if YYDEBUG != 0
  1160.   if (yydebug)
  1161.     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
  1162. #endif
  1163.  
  1164.   /* Discard the token being shifted unless it is eof.  */
  1165.   if (yychar != YYEOF)
  1166.     yychar = YYEMPTY;
  1167.  
  1168.   *++yyvsp = yylval;
  1169. #ifdef YYLSP_NEEDED
  1170.   *++yylsp = yylloc;
  1171. #endif
  1172.  
  1173.   /* count tokens shifted since error; after three, turn off error status.  */
  1174.   if (yyerrstatus) yyerrstatus--;
  1175.  
  1176.   yystate = yyn;
  1177.   goto yynewstate;
  1178.  
  1179. /* Do the default action for the current state.  */
  1180. yydefault:
  1181.  
  1182.   yyn = yydefact[yystate];
  1183.   if (yyn == 0)
  1184.     goto yyerrlab;
  1185.  
  1186. /* Do a reduction.  yyn is the number of a rule to reduce with.  */
  1187. yyreduce:
  1188.   yylen = yyr2[yyn];
  1189.   yyval = yyvsp[1-yylen]; /* implement default value of the action */
  1190.  
  1191. #if YYDEBUG != 0
  1192.   if (yydebug)
  1193.     {
  1194.       if (yylen == 1)
  1195.     fprintf (stderr, "Reducing 1 value via rule %d (line %d), ",
  1196.          yyn, yyrline[yyn]);
  1197.       else
  1198.     fprintf (stderr, "Reducing %d values via rule %d (line %d), ",
  1199.          yylen, yyn, yyrline[yyn]);
  1200.     }
  1201. #endif
  1202.  
  1203.  
  1204.   switch (yyn) {
  1205.  
  1206. case 34:
  1207. {
  1208.             if (yyvsp[0].obj) {
  1209.                 /*
  1210.                  * Add instance to current object.
  1211.                  */
  1212.                 yyvsp[0].obj->next = Defstack->obj->next;
  1213.                 Defstack->obj->next = yyvsp[0].obj;
  1214.             }
  1215.         ;
  1216.     break;}
  1217. case 35:
  1218. {
  1219.             if (yyval.obj && CurText) {
  1220.                 yyval.obj->texture = TextAppend(CurText, yyval.obj->texture);
  1221.             }
  1222.             CurText = (Texture *)NULL;
  1223.         ;
  1224.     break;}
  1225. case 36:
  1226. {
  1227.             yyval.obj = yyvsp[-1].obj;
  1228.             if (yyval.obj != (Geom *)NULL) {
  1229.                 if (TransHead) {
  1230.                     yyval.obj->trans = TransHead;
  1231.                     yyval.obj->transtail = TransTail;
  1232.                     /*
  1233.                      * We compose non-animated tranformation lists,
  1234.                      * so we're only animated if it's one long,
  1235.                      * or it's animated itself.
  1236.                      */
  1237.                     if (yyval.obj->trans->assoc || yyval.obj->trans->next)
  1238.                         /* geometry is animated...*/
  1239.                         yyval.obj->animtrans = TRUE;
  1240.                 }
  1241.             }
  1242.         ;
  1243.     break;}
  1244. case 37:
  1245. {
  1246.             if (yyval.obj)
  1247.                 StatsAddRep(yyval.obj);
  1248.         ;
  1249.     break;}
  1250. case 41:
  1251. {
  1252.             if (yyval.obj)
  1253.                 yyval.obj->prims = 1;    /* one primitive */
  1254.         ;
  1255.     break;}
  1256. case 53:
  1257. {
  1258.             if (yyvsp[0].obj) {
  1259.                 yyvsp[0].obj->name = yyvsp[-1].c;
  1260.                 GeomAddToDefined(yyvsp[0].obj);
  1261.             }
  1262.         ;
  1263.     break;}
  1264. case 62:
  1265. {
  1266.             if (yyvsp[-1].text != (Texture *)NULL) {
  1267.                 /*
  1268.                  * Set transformation information.
  1269.                  */
  1270.                 if (TransHead) {
  1271.                     yyvsp[-1].text->trans = TransHead;
  1272.                     /*
  1273.                      * We compose non-animated tranformation lists,
  1274.                      * so we're only animated if it's one long,
  1275.                      * or it's animated itself.
  1276.                      */
  1277.                     if (yyvsp[-1].text->trans->assoc || yyvsp[-1].text->trans->next)
  1278.                         /* texture transformation is animated...*/
  1279.                         yyvsp[-1].text->animtrans = TRUE;
  1280.                 }
  1281.                 /*
  1282.                  * Walk to the end of list of textures and
  1283.                  * append new texture.  This is done so that
  1284.                  * textures are applied in the expected order.
  1285.                  */
  1286.                 CurText = TextAppend(yyvsp[-1].text, CurText);
  1287.             }
  1288.         ;
  1289.     break;}
  1290. case 63:
  1291. {
  1292.             yyval.text = TextCheckerCreate(yyvsp[0].surf);
  1293.         ;
  1294.     break;}
  1295. case 64:
  1296. {
  1297.             yyval.text = TextBlotchCreate(yyvsp[-1].d, yyvsp[0].surf);
  1298.         ;
  1299.     break;}
  1300. case 65:
  1301. {
  1302.             yyval.text = TextBumpCreate(yyvsp[0].d);
  1303.         ;
  1304.     break;}
  1305. case 66:
  1306. {
  1307.             yyval.text = TextMarbleCreate((char *)NULL);
  1308.         ;
  1309.     break;}
  1310. case 67:
  1311. {
  1312.             yyval.text = TextMarbleCreate(yyvsp[0].c);
  1313.         ;
  1314.     break;}
  1315. case 68:
  1316. {
  1317.             yyval.text = TextFBmCreate(yyvsp[-5].d, yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].d, yyvsp[-1].i, yyvsp[0].d,
  1318.                         (char *)NULL);
  1319.         ;
  1320.     break;}
  1321. case 69:
  1322. {
  1323.             yyval.text = TextFBmCreate(yyvsp[-6].d, yyvsp[-5].d, yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].i, yyvsp[-1].d, yyvsp[0].c);
  1324.         ;
  1325.     break;}
  1326. case 70:
  1327. {
  1328.             yyval.text = TextFBmBumpCreate(yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].d, yyvsp[-1].d, yyvsp[0].i);
  1329.         ;
  1330.     break;}
  1331. case 71:
  1332. {
  1333.             yyval.text = TextWoodCreate();
  1334.         ;
  1335.     break;}
  1336. case 72:
  1337. {
  1338.             yyval.text = TextGlossCreate(yyvsp[0].d);
  1339.         ;
  1340.     break;}
  1341. case 73:
  1342. {
  1343.             yyval.text = TextCloudCreate(yyvsp[-6].d, yyvsp[-5].d, yyvsp[-4].d, yyvsp[-3].i, yyvsp[-2].d, yyvsp[-1].d, yyvsp[0].d);
  1344.         ;
  1345.     break;}
  1346. case 74:
  1347. {
  1348.             yyval.text = TextSkyCreate(yyvsp[-5].d, yyvsp[-4].d, yyvsp[-3].d, yyvsp[-2].i, yyvsp[-1].d, yyvsp[0].d);
  1349.         ;
  1350.     break;}
  1351. case 75:
  1352. {
  1353.             /*
  1354.              * Image texturing has so many options
  1355.              * that specification is keyword-based.
  1356.              */
  1357.             if (Imagetext->image == (Image *)NULL)
  1358.                 yyval.text = (Texture *)NULL;
  1359.             else
  1360.                 yyval.text = TextCreate(Imagetext, ImageTextApply);
  1361.             Imagetext = (ImageText *)NULL;
  1362.         ;
  1363.     break;}
  1364. case 76:
  1365. {
  1366.             yyval.text = TextStripeCreate(yyvsp[-3].surf, yyvsp[-2].d, yyvsp[-1].d, yyvsp[0].map);
  1367.         ;
  1368.     break;}
  1369. case 77:
  1370. {
  1371.             yyval.text = TextWindyCreate(yyvsp[-7].d, yyvsp[-6].d, yyvsp[-5].d, yyvsp[-4].d, yyvsp[-3].i, yyvsp[-2].d, yyvsp[-1].d, yyvsp[0].d);
  1372.         ;
  1373.     break;}
  1374. case 78:
  1375. {
  1376.             yyval.text = TextMountCreate(yyvsp[-2].c, yyvsp[-1].d, yyvsp[0].d);
  1377.         ;
  1378.     break;}
  1379. case 80:
  1380. {
  1381.             Imagetext = ImageTextCreate(yyvsp[0].c);
  1382.         ;
  1383.     break;}
  1384. case 83:
  1385. {
  1386.             /* set texture to modify given component */    
  1387.             ImageTextSetComponent(Imagetext, yyvsp[0].i);
  1388.         ;
  1389.     break;}
  1390. case 84:
  1391. {
  1392.             Imagetext->tileu = yyvsp[-1].d;
  1393.             Imagetext->tilev = yyvsp[0].d;
  1394.         ;
  1395.     break;}
  1396. case 85:
  1397. {
  1398.             Imagetext->surf = yyvsp[0].surf;
  1399.         ;
  1400.     break;}
  1401. case 86:
  1402. {
  1403.             Imagetext->hi = yyvsp[-1].d;
  1404.             Imagetext->lo = yyvsp[0].d;
  1405.         ;
  1406.     break;}
  1407. case 87:
  1408. {
  1409.             Imagetext->smooth = TRUE;
  1410.         ;
  1411.     break;}
  1412. case 88:
  1413. {
  1414.             Imagetext->mapping = yyvsp[0].map;
  1415.         ;
  1416.     break;}
  1417. case 89:
  1418. {
  1419.             Geom *otmp;
  1420.             /*
  1421.              * Create an instance of the named object.
  1422.              */
  1423.             otmp = GeomGetNamed(yyvsp[0].c);
  1424.             if (otmp == (Geom *)NULL)
  1425.                 RLerror(RL_PANIC,
  1426.                   "There is no object named \"%s\".", yyvsp[0].c,"","");
  1427.             yyval.obj = GeomInstanceCreate(otmp);
  1428.             yyval.obj->surf = yyvsp[-1].surf;
  1429.             yyval.obj->prims = otmp->prims;
  1430.         ;
  1431.     break;}
  1432. case 90:
  1433. {
  1434.             Geom *otmp;
  1435.  
  1436.             otmp = GeomGetNamed(yyvsp[0].c);
  1437.             if (otmp == (Geom *)NULL)
  1438.                 RLerror(RL_PANIC,
  1439.                   "There is no object named \"%s\".", yyvsp[0].c,"","");
  1440.             yyval.obj = GeomInstanceCreate(otmp);
  1441.             yyval.obj->surf = CurSurf->surf;
  1442.             yyval.obj->prims = otmp->prims;
  1443.         ;
  1444.     break;}
  1445. case 92:
  1446. {
  1447.             TransHead = TransTail = (Trans *)NULL;
  1448.         ;
  1449.     break;}
  1450. case 93:
  1451. {
  1452.             if (TransHead == (Trans *)NULL) {
  1453.                 /* we're the list, head and tail */
  1454.                 TransHead = TransTail = yyvsp[0].trans;
  1455.             } else {
  1456.                 if (yyvsp[0].trans->animated || TransTail->animated) {
  1457.                     /* new tail */
  1458.                     yyvsp[0].trans->prev = TransTail;
  1459.                     TransTail->next = yyvsp[0].trans;
  1460.                     TransTail = yyvsp[0].trans;
  1461.                 } else {
  1462.                     /* collapse with tail */
  1463.                     TransCompose(TransTail, yyvsp[0].trans, TransTail);
  1464.                     TransFree(yyvsp[0].trans);
  1465.                 }
  1466.             }
  1467.         ;
  1468.     break;}
  1469. case 94:
  1470. {
  1471.             yyval.trans = TransScaleCreate();
  1472.             TransScaleSetX(yyval.trans, yyvsp[-2].e);
  1473.             TransScaleSetY(yyval.trans, yyvsp[-1].e);
  1474.             TransScaleSetZ(yyval.trans, yyvsp[0].e);
  1475.             if (!yyval.trans->animated)
  1476.                 TransPropagate(yyval.trans);
  1477.                 
  1478.         ;
  1479.     break;}
  1480. case 95:
  1481. {
  1482.             yyval.trans = TransTranslateCreate();
  1483.             TransTranslateSetX(yyval.trans, yyvsp[-2].e);
  1484.             TransTranslateSetY(yyval.trans, yyvsp[-1].e);
  1485.             TransTranslateSetZ(yyval.trans, yyvsp[0].e);
  1486.             if (!yyval.trans->animated)
  1487.                 TransPropagate(yyval.trans);
  1488.         ;
  1489.     break;}
  1490. case 96:
  1491. {
  1492.             yyval.trans = TransRotateCreate();
  1493.             TransRotateSetX(yyval.trans, yyvsp[-3].e);
  1494.             TransRotateSetY(yyval.trans, yyvsp[-2].e);
  1495.             TransRotateSetZ(yyval.trans, yyvsp[-1].e);
  1496.             TransRotateSetTheta(yyval.trans, yyvsp[0].e);
  1497.             if (!yyval.trans->animated)
  1498.                 TransPropagate(yyval.trans);
  1499.         ;
  1500.     break;}
  1501. case 97:
  1502. {
  1503.             yyval.trans = TransXformCreate();
  1504.             TransXformSetX0(yyval.trans, yyvsp[-8].e);
  1505.             TransXformSetY0(yyval.trans, yyvsp[-7].e);
  1506.             TransXformSetZ0(yyval.trans, yyvsp[-6].e);
  1507.             TransXformSetX1(yyval.trans, yyvsp[-5].e);
  1508.             TransXformSetY1(yyval.trans, yyvsp[-4].e);
  1509.             TransXformSetZ1(yyval.trans, yyvsp[-3].e);
  1510.             TransXformSetX2(yyval.trans, yyvsp[-2].e);
  1511.             TransXformSetY2(yyval.trans, yyvsp[-1].e);
  1512.             TransXformSetZ2(yyval.trans, yyvsp[0].e);
  1513.             if (!yyval.trans->animated)
  1514.                 TransPropagate(yyval.trans);
  1515.         ;
  1516.     break;}
  1517. case 98:
  1518. {
  1519.             yyval.trans = TransXformCreate();
  1520.             TransXformSetX0(yyval.trans, yyvsp[-11].e);
  1521.             TransXformSetY0(yyval.trans, yyvsp[-10].e);
  1522.             TransXformSetZ0(yyval.trans, yyvsp[-9].e);
  1523.             TransXformSetX1(yyval.trans, yyvsp[-8].e);
  1524.             TransXformSetY1(yyval.trans, yyvsp[-7].e);
  1525.             TransXformSetZ1(yyval.trans, yyvsp[-6].e);
  1526.             TransXformSetX2(yyval.trans, yyvsp[-5].e);
  1527.             TransXformSetY2(yyval.trans, yyvsp[-4].e);
  1528.             TransXformSetZ2(yyval.trans, yyvsp[-3].e);
  1529.             TransXformSetXt(yyval.trans, yyvsp[-2].e);
  1530.             TransXformSetYt(yyval.trans, yyvsp[-1].e);
  1531.             TransXformSetZt(yyval.trans, yyvsp[0].e);
  1532.             if (!yyval.trans->animated)
  1533.                 TransPropagate(yyval.trans);
  1534.         ;
  1535.     break;}
  1536. case 99:
  1537. {
  1538.             Camera.pos = yyvsp[-1].v;
  1539.             /*
  1540.              * Eye can be transformed...
  1541.             if (CurMatrix) {
  1542.                 PointTransform(&Camera.pos, CurMatrix);
  1543.                 free((voidstar)CurMatrix);
  1544.                 CurMatrix = (Matrix*)NULL;
  1545.             }
  1546.              */
  1547.         ;
  1548.     break;}
  1549. case 100:
  1550. {
  1551.             Camera.lookp = yyvsp[0].v;
  1552.         ;
  1553.     break;}
  1554. case 101:
  1555. {
  1556.             Camera.up = yyvsp[0].v;
  1557.         ;
  1558.     break;}
  1559. case 102:
  1560. {
  1561.             Camera.hfov = yyvsp[-1].d;
  1562.             Camera.vfov = yyvsp[0].d;
  1563.         ;
  1564.     break;}
  1565. case 103:
  1566. {
  1567.             Camera.hfov = yyvsp[0].d;
  1568.             Camera.vfov = UNSET;
  1569.         ;
  1570.     break;}
  1571. case 104:
  1572. {
  1573.             if (!Options.samples_set)
  1574.                 Options.samples = yyvsp[-1].i;
  1575.             if (!Options.jitter_set)
  1576.                 Options.jitter = TRUE;
  1577.         ;
  1578.     break;}
  1579. case 105:
  1580. {
  1581.             if (!Options.samples_set)
  1582.                 Options.samples = yyvsp[-1].i;
  1583.             if (!Options.jitter_set)
  1584.                 Options.jitter = FALSE;
  1585.         ;
  1586.     break;}
  1587. case 106:
  1588. {
  1589.             if (!Options.samples_set)
  1590.                 Options.samples = yyvsp[0].i;
  1591.         ;
  1592.     break;}
  1593. case 107:
  1594. {
  1595.             Options.gaussian = FALSE;
  1596.             Options.filterwidth = yyvsp[0].d;
  1597.         ;
  1598.     break;}
  1599. case 108:
  1600. {
  1601.             Options.gaussian = FALSE;
  1602.         ;
  1603.     break;}
  1604. case 109:
  1605. {
  1606.             Options.gaussian = TRUE;
  1607.             Options.filterwidth = yyvsp[0].d;
  1608.         ;
  1609.     break;}
  1610. case 110:
  1611. {
  1612.             Options.gaussian = TRUE;
  1613.         ;
  1614.     break;}
  1615. case 111:
  1616. {
  1617.             Options.starttime = yyvsp[0].d;
  1618.         ;
  1619.     break;}
  1620. case 112:
  1621. {
  1622.             if (!Options.totalframes_set)
  1623.                 Options.totalframes = yyvsp[0].i;
  1624.         ;
  1625.     break;}
  1626. case 113:
  1627. {
  1628.             Options.framelength = yyvsp[0].d;
  1629.         ;
  1630.     break;}
  1631. case 114:
  1632. {
  1633.             Options.shutterspeed = yyvsp[0].d;
  1634.         ;
  1635.     break;}
  1636. case 115:
  1637. {
  1638.             if (!Options.contrast_set) {
  1639.                 Options.contrast.r = yyvsp[-2].d;
  1640.                 Options.contrast.g = yyvsp[-1].d;
  1641.                 Options.contrast.b = yyvsp[0].d;
  1642.             }
  1643.         ;
  1644.     break;}
  1645. case 116:
  1646. {
  1647.             if (!Options.cutoff_set)
  1648.                 Options.cutoff = yyvsp[0].col;
  1649.         ;
  1650.     break;}
  1651. case 117:
  1652. {
  1653.             if (!Options.resolution_set) {
  1654.                 Screen.xres = yyvsp[-1].i;
  1655.                 Screen.yres = yyvsp[0].i;
  1656.             }
  1657.         ;
  1658.     break;}
  1659. case 118:
  1660. {
  1661.             if (!Options.window_set) {
  1662.                 Options.window[LOW][X] = yyvsp[-3].i;
  1663.                 Options.window[HIGH][X] = yyvsp[-2].i;
  1664.                 Options.window[LOW][Y] = yyvsp[-1].i;
  1665.                 Options.window[HIGH][Y] = yyvsp[0].i;
  1666.                 /*
  1667.                  * We must let ViewingSetup know
  1668.                  * that a window has been defined.
  1669.                  */
  1670.                 Options.window_set = TRUE;
  1671.             }
  1672.         ;
  1673.     break;}
  1674. case 119:
  1675. {
  1676.             if (!Options.crop_set) {
  1677.                 Options.crop[LOW][X] = yyvsp[-3].d;
  1678.                 Options.crop[HIGH][X] = yyvsp[-2].d;
  1679.                 Options.crop[LOW][Y] = yyvsp[-1].d;
  1680.                 Options.crop[HIGH][Y] = yyvsp[0].d;
  1681.             }
  1682.         ;
  1683.     break;}
  1684. case 120:
  1685. {
  1686.             if (!Options.freq_set)
  1687.                 Options.report_freq = yyvsp[-1].i;
  1688.             if (Options.statsname == (char *)NULL)
  1689.                 Options.statsname = strsave(yyvsp[0].c);
  1690.         ;
  1691.     break;}
  1692. case 121:
  1693. {
  1694.             if (!Options.freq_set)
  1695.                 Options.report_freq = yyvsp[0].i;
  1696.         ;
  1697.     break;}
  1698. case 122:
  1699. {
  1700.             if (Options.statsname == (char *)NULL)
  1701.                 Options.statsname = strsave(yyvsp[0].c);
  1702.         ;
  1703.     break;}
  1704. case 124:
  1705. { Options.verbose = TRUE; ;
  1706.     break;}
  1707. case 126:
  1708. { Options.quiet = TRUE; ;
  1709.     break;}
  1710. case 128:
  1711. {
  1712.             Camera.aperture = yyvsp[0].d;
  1713.         ;
  1714.     break;}
  1715. case 129:
  1716. {
  1717.             Camera.focaldist = yyvsp[0].d;
  1718.         ;
  1719.     break;}
  1720. case 130:
  1721. {
  1722.             if (!Options.eyesep_set)
  1723.                 Options.eyesep = yyvsp[0].d;
  1724.         ;
  1725.     break;}
  1726. case 131:
  1727. {
  1728.             if (!Options.maxdepth_set)
  1729.                 Options.maxdepth = yyvsp[0].i;
  1730.         ;
  1731.     break;}
  1732. case 132:
  1733. {
  1734.             Screen.background = yyvsp[0].col;
  1735.         ;
  1736.     break;}
  1737. case 133:
  1738. {
  1739.             Options.shadowtransp = !Options.shadowtransp;
  1740.         ;
  1741.     break;}
  1742. case 134:
  1743. {
  1744.             LightAddToDefined(yyvsp[0].light);
  1745.         ;
  1746.     break;}
  1747. case 135:
  1748. {
  1749.             yyvsp[-1].light->shadow = FALSE;
  1750.             LightAddToDefined(yyvsp[-1].light);
  1751.         ;
  1752.     break;}
  1753. case 136:
  1754. {
  1755.             Options.ambient = yyvsp[-1].col;
  1756.         ;
  1757.     break;}
  1758. case 137:
  1759. {
  1760.             extern void AreaLightCreate();
  1761.             /* Area light is strange in that the
  1762.              * Creation routine does the installation.
  1763.              */
  1764.             AreaLightCreate(&yyvsp[-6].col, &yyvsp[-4].v, &yyvsp[-3].v, yyvsp[-2].i, &yyvsp[-1].v, yyvsp[0].i, TRUE);
  1765.         ;
  1766.     break;}
  1767. case 138:
  1768. {
  1769.             extern void AreaLightCreate();
  1770.             /* Area light is strange in that the
  1771.              * Creation routine does the installation.
  1772.              */
  1773.             AreaLightCreate(&yyvsp[-7].col, &yyvsp[-5].v, &yyvsp[-4].v, yyvsp[-3].i, &yyvsp[-2].v, yyvsp[-1].i, FALSE);
  1774.         ;
  1775.     break;}
  1776. case 139:
  1777. {
  1778.             yyval.light = LightPointCreate(&yyvsp[-2].col, &yyvsp[0].v);
  1779.         ;
  1780.     break;}
  1781. case 140:
  1782. {
  1783.             yyval.light = LightInfiniteCreate(&yyvsp[-2].col, &yyvsp[0].v);
  1784.         ;
  1785.     break;}
  1786. case 141:
  1787. {
  1788.             yyval.light = LightExtendedCreate(&yyvsp[-3].col, yyvsp[-1].d, &yyvsp[0].v);
  1789.         ;
  1790.     break;}
  1791. case 142:
  1792. {
  1793.             yyval.light = LightSpotCreate(&yyvsp[-4].col, &yyvsp[-2].v, &yyvsp[-1].v, yyvsp[0].d, 0., 0.);
  1794.         ;
  1795.     break;}
  1796. case 143:
  1797. {
  1798.             /* light <intens> spot from <to> coef inner_rad
  1799.                     outer_rad */
  1800.             yyval.light = LightSpotCreate(&yyvsp[-6].col, &yyvsp[-4].v, &yyvsp[-3].v, yyvsp[-2].d, yyvsp[-1].d, yyvsp[0].d);
  1801.         ;
  1802.     break;}
  1803. case 144:
  1804. {
  1805.             yyval.col = yyvsp[0].col;
  1806.         ;
  1807.     break;}
  1808. case 145:
  1809. {
  1810.             CurSurf->surf = yyvsp[0].surf;
  1811.         ;
  1812.     break;}
  1813. case 147:
  1814. {
  1815.             yyval.surf = CurSurf->surf;
  1816.         ;
  1817.     break;}
  1818. case 151:
  1819. {
  1820.             yyval.surf = SurfaceGetNamed(yyvsp[0].c);
  1821.             /*
  1822.              * Free up memory allocated for surf name.
  1823.              * We bother doing this because for large models
  1824.              * converted from 3.0, surfnames this can account
  1825.              * for lots o' bytes.
  1826.              */
  1827.             free((voidstar)yyvsp[0].c);
  1828.         ;
  1829.     break;}
  1830. case 152:
  1831. {
  1832.             extern Surface DefaultSurface;
  1833.  
  1834.             if (CurSurf->surf)
  1835.                 yyval.surf = CurSurf->surf;
  1836.             else
  1837.                 yyval.surf = &DefaultSurface;
  1838.         ;
  1839.     break;}
  1840. case 153:
  1841. {
  1842.             yyval.surf = tmpsurf;
  1843.             tmpsurf = (Surface *)NULL;
  1844.         ;
  1845.     break;}
  1846. case 154:
  1847. {
  1848.             yyval.surf = tmpsurf;
  1849.             tmpsurf = (Surface *)NULL;
  1850.         ;
  1851.     break;}
  1852. case 155:
  1853. {
  1854.             tmpsurf = SurfaceCopy(SurfaceGetNamed(yyvsp[0].c));
  1855.         ;
  1856.     break;}
  1857. case 156:
  1858. {
  1859.             extern Surface DefaultSurface;
  1860.             if (CurSurf->surf)
  1861.                 tmpsurf = SurfaceCopy(CurSurf->surf);
  1862.             else
  1863.                 tmpsurf = SurfaceCopy(&DefaultSurface);
  1864.         ;
  1865.     break;}
  1866. case 157:
  1867. {
  1868.             yyval.surf = tmpsurf;
  1869.             tmpsurf = (Surface *)NULL;
  1870.         ;
  1871.     break;}
  1872. case 158:
  1873. {
  1874.             tmpsurf = SurfaceCopy(yyvsp[0].surf);
  1875.             tmpsurf->name = strsave(yyvsp[-1].c);
  1876.             SurfaceAddToDefined(tmpsurf);
  1877.             tmpsurf = (Surface *)NULL;
  1878.         ;
  1879.     break;}
  1880. case 159:
  1881. {
  1882.             /* black surface */
  1883.             tmpsurf = SurfaceCreate();
  1884.             tmpsurf->name = strsave(yyvsp[0].c);
  1885.             SurfaceAddToDefined(tmpsurf);
  1886.             tmpsurf = (Surface *)NULL;
  1887.         ;
  1888.     break;}
  1889. case 173:
  1890. {
  1891.             if (tmpsurf == (Surface *)NULL)
  1892.                 tmpsurf = SurfaceCreate();
  1893.             tmpsurf->amb = yyvsp[0].col;
  1894.         ;
  1895.     break;}
  1896. case 174:
  1897. {
  1898.             if (tmpsurf == (Surface *)NULL)
  1899.                 tmpsurf = SurfaceCreate();
  1900.             tmpsurf->diff = yyvsp[0].col;
  1901.         ;
  1902.     break;}
  1903. case 175:
  1904. {
  1905.             if (tmpsurf == (Surface *)NULL)
  1906.                 tmpsurf = SurfaceCreate();
  1907.             tmpsurf->spec = yyvsp[0].col;
  1908.         ;
  1909.     break;}
  1910. case 176:
  1911. {
  1912.             if (tmpsurf == (Surface *)NULL)
  1913.                 tmpsurf = SurfaceCreate();
  1914.             tmpsurf->body = yyvsp[0].col;
  1915.         ;
  1916.     break;}
  1917. case 177:
  1918. {
  1919.             if (tmpsurf == (Surface *)NULL)
  1920.                 tmpsurf = SurfaceCreate();
  1921.             tmpsurf->statten = yyvsp[0].d;
  1922.         ;
  1923.     break;}
  1924. case 178:
  1925. {
  1926.             if (tmpsurf == (Surface *)NULL)
  1927.                 tmpsurf = SurfaceCreate();
  1928.             tmpsurf->srexp = yyvsp[0].d;
  1929.         ;
  1930.     break;}
  1931. case 179:
  1932. {
  1933.             if (tmpsurf == (Surface *)NULL)
  1934.                 tmpsurf = SurfaceCreate();
  1935.             tmpsurf->reflect = yyvsp[0].d;
  1936.         ;
  1937.     break;}
  1938. case 180:
  1939. {
  1940.             if (tmpsurf == (Surface *)NULL)
  1941.                 tmpsurf = SurfaceCreate();
  1942.             tmpsurf->transp = yyvsp[0].d;
  1943.         ;
  1944.     break;}
  1945. case 181:
  1946. {
  1947.             if (tmpsurf == (Surface *)NULL)
  1948.                 tmpsurf = SurfaceCreate();
  1949.             tmpsurf->index = yyvsp[0].d;
  1950.         ;
  1951.     break;}
  1952. case 182:
  1953. {
  1954.             if (tmpsurf == (Surface *)NULL)
  1955.                 tmpsurf = SurfaceCreate();
  1956.             tmpsurf->translucency = yyvsp[-2].d;
  1957.             tmpsurf->translu = yyvsp[-1].col;
  1958.             tmpsurf->stexp = yyvsp[0].d;
  1959.         ;
  1960.     break;}
  1961. case 183:
  1962. {
  1963.             if (tmpsurf == (Surface *)NULL)
  1964.                 tmpsurf = SurfaceCreate();
  1965.             tmpsurf->noshadow = TRUE;
  1966.         ;
  1967.     break;}
  1968. case 184:
  1969. {
  1970.             yyval.obj = GeomHfCreate(yyvsp[0].c);
  1971.             if (yyval.obj)
  1972.                 yyval.obj->surf = yyvsp[-1].surf;
  1973.         ;
  1974.     break;}
  1975. case 185:
  1976. {
  1977.             yyval.obj = GeomHfCreate(yyvsp[0].c);
  1978.         ;
  1979.     break;}
  1980. case 186:
  1981. {
  1982.             yyval.obj = GeomPolygonCreate(Polypoints, Npoints,
  1983.                 Options.flipnorm);
  1984.             if (yyval.obj)
  1985.                 yyval.obj->surf = yyvsp[-1].surf;
  1986.             Polypoints = (PointList *)NULL;
  1987.             Npoints = 0;
  1988.         ;
  1989.     break;}
  1990. case 189:
  1991. {
  1992.             PointList *ptmp;
  1993.  
  1994.             ptmp = (PointList *)RayMalloc(sizeof(PointList));
  1995.             ptmp->vec = yyvsp[0].v;
  1996.             ptmp->next = Polypoints;
  1997.             Polypoints = ptmp;
  1998.             Npoints++;
  1999.         ;
  2000.     break;}
  2001. case 190:
  2002. {
  2003.             if (Defstack->obj) {
  2004.                 /*
  2005.                  * Set object texture to current texture.
  2006.                  */
  2007.                 Defstack->obj->texture = CurText;
  2008.             }
  2009.             CurText = (Texture *)NULL;
  2010.             /*
  2011.              * Pop topmost object on stack.
  2012.              */
  2013.             yyval.obj = Defstack->obj;
  2014.             Defstack = GeomStackPop(Defstack);
  2015.             /* Pop current surface */
  2016.             CurSurf = SurfPop(CurSurf);
  2017.             /* Make current default surf aggregate's default */
  2018.             yyval.obj->surf = CurSurf->surf;
  2019.         ;
  2020.     break;}
  2021. case 191:
  2022. {
  2023.             /* Convert aggregate, pop stacks, etc. */
  2024.             if (yyvsp[-2].obj) {
  2025.                 if (Defstack->obj->next == (Geom *)NULL) {
  2026.                     RLerror(RL_WARN,
  2027.                         "Null object defined.\n","","","");
  2028.                     Defstack->obj = (Geom *)NULL;
  2029.                 } else {
  2030.                     /*
  2031.                      * Convert the linked list of objects
  2032.                      * associated with the topmost object
  2033.                      * to the appropriate aggregate type.
  2034.                      */
  2035.                     Defstack->obj->prims=AggregateConvert(
  2036.                         Defstack->obj,
  2037.                         Defstack->obj->next);
  2038.                     /*
  2039.                      * Make sure conversion worked OK.
  2040.                      */
  2041.                     if (Defstack->obj->prims <= 0)
  2042.                         Defstack->obj = (Geom *)NULL;
  2043.                 }
  2044.             }
  2045.         ;
  2046.     break;}
  2047. case 192:
  2048. {
  2049.             if (yyvsp[0].obj) {
  2050.                 Defstack = GeomStackPush(yyvsp[0].obj, Defstack);
  2051.                 CurSurf = SurfPush((Surface *)NULL, CurSurf);
  2052.             }
  2053.         ;
  2054.     break;}
  2055. case 196:
  2056. {
  2057.             yyval.obj = GeomListCreate();
  2058.         ;
  2059.     break;}
  2060. case 197:
  2061. {
  2062.             yyval.obj = GeomGridCreate(yyvsp[-2].i, yyvsp[-1].i, yyvsp[0].i);
  2063.         ;
  2064.     break;}
  2065. case 198:
  2066. {
  2067.             yyval.obj = GeomCsgCreate(yyvsp[0].i);
  2068.             Options.csg = TRUE;
  2069.         ;
  2070.     break;}
  2071. case 199:
  2072. {
  2073.             yyval.i = CSG_UNION;
  2074.         ;
  2075.     break;}
  2076. case 200:
  2077. {
  2078.             yyval.i = CSG_INTERSECT;
  2079.         ;
  2080.     break;}
  2081. case 201:
  2082. {
  2083.             yyval.i = CSG_DIFFERENCE;
  2084.         ;
  2085.     break;}
  2086. case 202:
  2087. {
  2088.             if (equal(yyvsp[-3].d, yyvsp[-1].d)) {
  2089.                 /* It's really a cylinder */
  2090.                 yyval.obj = GeomCylinderCreate(yyvsp[-3].d, &yyvsp[-2].v, &yyvsp[0].v);
  2091.             } else
  2092.                 yyval.obj = GeomConeCreate(yyvsp[-3].d, &yyvsp[-2].v, yyvsp[-1].d, &yyvsp[0].v);
  2093.             if (yyval.obj)
  2094.                 yyval.obj->surf = yyvsp[-4].surf;
  2095.         ;
  2096.     break;}
  2097. case 203:
  2098. {
  2099.             yyval.obj = GeomCylinderCreate(yyvsp[-2].d, &yyvsp[-1].v, &yyvsp[0].v);
  2100.             if (yyval.obj)
  2101.                 yyval.obj->surf = yyvsp[-3].surf;
  2102.         ;
  2103.     break;}
  2104. case 204:
  2105. {
  2106.             yyval.obj = GeomSphereCreate(yyvsp[-1].d, &(yyvsp[0].v));
  2107.             if (yyval.obj)
  2108.                 yyval.obj->surf = yyvsp[-2].surf;
  2109.         ;
  2110.     break;}
  2111. case 205:
  2112. {
  2113.             yyval.obj = GeomDiscCreate(yyvsp[-2].d, &(yyvsp[-1].v), &(yyvsp[0].v));
  2114.             if (yyval.obj)
  2115.                 yyval.obj->surf = yyvsp[-3].surf;
  2116.         ;
  2117.     break;}
  2118. case 206:
  2119. {
  2120.             yyval.obj = GeomBoxCreate(&yyvsp[-1].v, &yyvsp[0].v);
  2121.             if (yyval.obj)
  2122.                 yyval.obj->surf = yyvsp[-2].surf;
  2123.         ;
  2124.     break;}
  2125. case 207:
  2126. {
  2127.             yyval.obj = GeomTriangleCreate(FLATTRI, &(yyvsp[-2].v), &(yyvsp[-1].v), &(yyvsp[0].v),
  2128.                 (Vector *)NULL, (Vector *)NULL, (Vector *)NULL,
  2129.                 (Vec2d *)NULL, (Vec2d *)NULL, (Vec2d *)NULL,
  2130.                 Options.flipnorm);
  2131.             if (yyval.obj)
  2132.                 yyval.obj->surf = yyvsp[-3].surf;
  2133.         ;
  2134.     break;}
  2135. case 208:
  2136. {
  2137.             yyval.obj = GeomTriangleCreate(PHONGTRI, &(yyvsp[-5].v), &(yyvsp[-3].v),
  2138.                 &(yyvsp[-1].v), &(yyvsp[-4].v), &(yyvsp[-2].v), &(yyvsp[0].v),
  2139.                 (Vec2d *)NULL, (Vec2d *)NULL, (Vec2d *)NULL,
  2140.                 Options.flipnorm);
  2141.             if (yyval.obj)
  2142.                 yyval.obj->surf = yyvsp[-6].surf;
  2143.         ;
  2144.     break;}
  2145. case 209:
  2146. {
  2147.             yyval.obj = GeomTriangleCreate(PHONGTRI, &(yyvsp[-8].v), &(yyvsp[-5].v), &(yyvsp[-2].v),
  2148.                         &(yyvsp[-7].v), &(yyvsp[-4].v), &(yyvsp[-1].v),
  2149.                         &(yyvsp[-6].uv), &(yyvsp[-3].uv), &(yyvsp[0].uv),
  2150.                         Options.flipnorm);
  2151.             if (yyval.obj)
  2152.                 yyval.obj->surf = yyvsp[-9].surf;
  2153.         ;
  2154.     break;}
  2155. case 210:
  2156. {
  2157.             yyval.obj = GeomPlaneCreate(&(yyvsp[-1].v), &(yyvsp[0].v));
  2158.             if (yyval.obj)
  2159.                 yyval.obj->surf = yyvsp[-2].surf;
  2160.         ;
  2161.     break;}
  2162. case 211:
  2163. {
  2164.             yyval.obj = GeomTorusCreate(yyvsp[-3].d, yyvsp[-2].d, &(yyvsp[-1].v), &(yyvsp[0].v));
  2165.             if (yyval.obj)
  2166.                 yyval.obj->surf = yyvsp[-4].surf;
  2167.         ;
  2168.     break;}
  2169. case 212:
  2170. {
  2171.             yyval.obj = GeomBlobCreate(yyvsp[-1].d, Metapoints, Npoints);
  2172.             if (yyval.obj)
  2173.                 yyval.obj->surf = yyvsp[-2].surf;
  2174.             Metapoints = (MetaList *)NULL;
  2175.             Npoints = 0;
  2176.         ;
  2177.     break;}
  2178. case 215:
  2179. {
  2180.             Metapoint = (MetaList *)RayMalloc(sizeof(MetaList));
  2181.             Metapoint->mvec.c0 = yyvsp[-4].d;
  2182.             Metapoint->mvec.rs = yyvsp[-3].d;
  2183.             Metapoint->mvec.x = yyvsp[-2].d;
  2184.             Metapoint->mvec.y = yyvsp[-1].d;
  2185.             Metapoint->mvec.z = yyvsp[0].d;
  2186.             Metapoint->next = Metapoints;
  2187.             Metapoints = Metapoint;
  2188.             Npoints++;
  2189.         ;
  2190.     break;}
  2191. case 216:
  2192. {
  2193.             if (Options.imgname != (char *)NULL)
  2194.                 /* Already set on command line. */
  2195.                 RLerror(RL_WARN,
  2196.                     "Ignoring output file name \"%s\".\n",
  2197.                     yyvsp[0].c,"","");
  2198.             else
  2199.                 Options.imgname = strsave(yyvsp[0].c);
  2200.         ;
  2201.     break;}
  2202. case 217:
  2203. {
  2204.             AtmosEffects = CurEffect;
  2205.             CurEffect = (Atmosphere *)NULL;
  2206.         ;
  2207.     break;}
  2208. case 218:
  2209. {
  2210.             if (yyvsp[-1].i <= 0.)
  2211.                 RLerror(RL_PANIC,
  2212.                 "Index of refraction must be positive.\n","","","");
  2213.             TopMedium.index = yyvsp[-1].i;
  2214.             AtmosEffects = CurEffect;
  2215.             CurEffect = (Atmosphere *)NULL;
  2216.         ;
  2217.     break;}
  2218. case 221:
  2219. {
  2220.             yyvsp[0].atmos->next = CurEffect;
  2221.             CurEffect = yyvsp[0].atmos;
  2222.         ;
  2223.     break;}
  2224. case 222:
  2225. {
  2226.             yyval.atmos = AtmosMistCreate(&(yyvsp[-3].col), &(yyvsp[-2].col), yyvsp[-1].d, yyvsp[0].d);
  2227.         ;
  2228.     break;}
  2229. case 223:
  2230. {
  2231.             yyval.atmos = AtmosFogCreate(&(yyvsp[-1].col), &(yyvsp[0].col));
  2232.         ;
  2233.     break;}
  2234. case 224:
  2235. {
  2236.             yyval.atmos = AtmosFogdeckCreate(yyvsp[-6].d, yyvsp[-5].d, &yyvsp[-4].v, yyvsp[-3].d, yyvsp[-2].i, &yyvsp[-1].col, &yyvsp[0].col);
  2237.         ;
  2238.     break;}
  2239. case 225:
  2240. {
  2241.             yyval.col.r = yyvsp[-2].d;
  2242.             yyval.col.g = yyvsp[-1].d;
  2243.             yyval.col.b = yyvsp[0].d;
  2244.         ;
  2245.     break;}
  2246. case 226:
  2247. {
  2248.             yyval.v.x = yyvsp[-2].d;
  2249.             yyval.v.y = yyvsp[-1].d;
  2250.             yyval.v.z = yyvsp[0].d;
  2251.         ;
  2252.     break;}
  2253. case 227:
  2254. {
  2255.             yyval.uv.u = yyvsp[-1].d;
  2256.             yyval.uv.v = yyvsp[0].d;
  2257.         ;
  2258.     break;}
  2259. case 229:
  2260. {
  2261.             yyval.map = UVMappingCreate();
  2262.         ;
  2263.     break;}
  2264. case 230:
  2265. {
  2266.             yyval.map = yyvsp[0].map;
  2267.         ;
  2268.     break;}
  2269. case 231:
  2270. {
  2271.             yyval.map = UVMappingCreate();
  2272.         ;
  2273.     break;}
  2274. case 232:
  2275. {
  2276.             yyval.map = SphereMappingCreate((Vector *)NULL,
  2277.                 (Vector *)NULL, (Vector *)NULL);
  2278.         ;
  2279.     break;}
  2280. case 233:
  2281. {
  2282.             /* origin up uaxis */
  2283.             yyval.map = SphereMappingCreate(&yyvsp[-2].v, &yyvsp[-1].v, &yyvsp[0].v);
  2284.         ;
  2285.     break;}
  2286. case 234:
  2287. {
  2288.             yyval.map = CylMappingCreate((Vector *)NULL,
  2289.                 (Vector *)NULL, (Vector *)NULL);
  2290.         ;
  2291.     break;}
  2292. case 235:
  2293. {
  2294.             /* origin up uaxis */
  2295.             yyval.map = CylMappingCreate(&yyvsp[-2].v, &yyvsp[-1].v, &yyvsp[0].v);
  2296.         ;
  2297.     break;}
  2298. case 236:
  2299. {
  2300.             yyval.map = LinearMappingCreate((Vector *)NULL,
  2301.                 (Vector *)NULL, (Vector *)NULL);
  2302.         ;
  2303.     break;}
  2304. case 237:
  2305. {
  2306.             /* origin up uaxis */
  2307.             yyval.map = LinearMappingCreate(&yyvsp[-2].v, &yyvsp[-1].v, &yyvsp[0].v);
  2308.         ;
  2309.     break;}
  2310. case 238:
  2311. {
  2312.             yyval.i = AMBIENT;
  2313.         ;
  2314.     break;}
  2315. case 239:
  2316. {
  2317.             yyval.i = DIFFUSE;
  2318.         ;
  2319.     break;}
  2320. case 240:
  2321. {
  2322.             yyval.i = BODY;
  2323.         ;
  2324.     break;}
  2325. case 241:
  2326. {
  2327.             yyval.i = SPECULAR;
  2328.         ;
  2329.     break;}
  2330. case 242:
  2331. {
  2332.             yyval.i = REFLECT;
  2333.         ;
  2334.     break;}
  2335. case 243:
  2336. {
  2337.             yyval.i = TRANSP;
  2338.         ;
  2339.     break;}
  2340. case 244:
  2341. {
  2342.             yyval.i = SPECPOW;
  2343.         ;
  2344.     break;}
  2345. case 245:
  2346. {
  2347.             yyval.i = BUMP;
  2348.         ;
  2349.     break;}
  2350. case 246:
  2351. {
  2352.             yyval.i = INDEX;
  2353.         ;
  2354.     break;}
  2355. case 247:
  2356. { yyval.col.r = yyval.col.g = yyval.col.b = yyvsp[0].d; ;
  2357.     break;}
  2358. case 249:
  2359. {
  2360.             fprintf(stderr,"%f\n",yyvsp[0].d);
  2361.         ;
  2362.     break;}
  2363. case 250:
  2364. {
  2365.             SymtabAddEntry(yyvsp[-1].c, yyvsp[0].e->type, yyvsp[0].e, NULL, yyvsp[0].e->timevary, 0);
  2366.         ;
  2367.     break;}
  2368. case 251:
  2369. { yyval.i = (int)yyvsp[0].d; ;
  2370.     break;}
  2371. case 253:
  2372. {
  2373.             if (!yyvsp[0].e->timevary) {
  2374.                 yyval.d = ExprEval(yyvsp[0].e);
  2375.             } else {
  2376.                 RLerror(RL_PANIC, "Illegal expression use.\n","","","");
  2377.             }
  2378.         ;
  2379.     break;}
  2380. case 254:
  2381. {
  2382.             yyval.e = ExprReuseFloatCreate(yyvsp[0].d);
  2383.         ;
  2384.     break;}
  2385. case 256:
  2386. {
  2387.             yyval.e = yyvsp[-1].e;
  2388.         ;
  2389.     break;}
  2390. case 257:
  2391. {
  2392.             yyval.e = ExprFloatCreate(yyvsp[0].d, FALSE);
  2393.         ;
  2394.     break;}
  2395. case 258:
  2396. {
  2397.             yyval.e = ExprFloatSymtabFind(yyvsp[0].c);
  2398.         ;
  2399.     break;}
  2400. case 259:
  2401. {
  2402.             yyval.e = ExprResolve1(yyvsp[-1].e, yyvsp[-3].sym->value.fp, yyvsp[-3].sym->timevary);
  2403.         ;
  2404.     break;}
  2405. case 260:
  2406. {
  2407.             yyval.e = ExprResolve2(yyvsp[-3].e, yyvsp[-1].e,
  2408.                     yyvsp[-5].sym->value.fp,
  2409.                     yyvsp[-5].sym->timevary);
  2410.         ;
  2411.     break;}
  2412. case 261:
  2413. {
  2414.             yyval.e = ExprResolve3(yyvsp[-5].e, yyvsp[-3].e, yyvsp[-1].e, 
  2415.                     yyvsp[-7].sym->value.fp,
  2416.                     yyvsp[-7].sym->timevary);
  2417.         ;
  2418.     break;}
  2419. case 262:
  2420. {
  2421.             yyval.e = ExprResolve4(yyvsp[-7].e, yyvsp[-5].e, yyvsp[-3].e, yyvsp[-1].e, 
  2422.                     yyvsp[-9].sym->value.fp,
  2423.                     yyvsp[-9].sym->timevary);
  2424.         ;
  2425.     break;}
  2426. case 263:
  2427. {
  2428.             yyval.e = ExprResolve5(yyvsp[-9].e, yyvsp[-7].e, yyvsp[-5].e, yyvsp[-3].e, yyvsp[-1].e,
  2429.                     yyvsp[-11].sym->value.fp,
  2430.                     yyvsp[-11].sym->timevary);
  2431.         ;
  2432.     break;}
  2433. case 264:
  2434. {
  2435.             yyval.e = yyvsp[-1].e;
  2436.         ;
  2437.     break;}
  2438. case 265:
  2439. {
  2440.             yyval.e = ExprResolve2(yyvsp[-2].e, yyvsp[0].e, SumExpr, FALSE);
  2441.         ;
  2442.     break;}
  2443. case 266:
  2444. {
  2445.             yyval.e = ExprResolve2(yyvsp[-2].e, yyvsp[0].e, DiffExpr, FALSE);
  2446.         ;
  2447.     break;}
  2448. case 267:
  2449. {
  2450.             yyval.e = ExprResolve2(yyvsp[-2].e, yyvsp[0].e, MultExpr, FALSE);
  2451.         ;
  2452.     break;}
  2453. case 268:
  2454. {
  2455.             yyval.e = ExprResolve2(yyvsp[-2].e, yyvsp[0].e, DivideExpr, FALSE);
  2456.         ;
  2457.     break;}
  2458. case 269:
  2459. {
  2460.             yyval.e = ExprResolve2(yyvsp[-2].e, yyvsp[0].e, ModExpr, FALSE);
  2461.         ;
  2462.     break;}
  2463. case 270:
  2464. {
  2465.             yyval.e = ExprResolve1(yyvsp[0].e, NegateExpr, FALSE);
  2466.         ;
  2467.     break;}
  2468. case 271:
  2469. {
  2470.             yyval.e = yyvsp[0].e;
  2471.         ;
  2472.     break;}
  2473. case 272:
  2474. {
  2475.             yyval.e = ExprResolve2(yyvsp[-2].e, yyvsp[0].e, pow, FALSE);
  2476.         ;
  2477.     break;}
  2478. case 274:
  2479. { yyval.d = -yyvsp[0].d; ;
  2480.     break;}
  2481. case 275:
  2482. { yyval.d = yyvsp[0].d; ;
  2483.     break;}
  2484. case 278:
  2485. {
  2486.             yyval.sym = SymtabBuiltinFind(yyvsp[0].c);
  2487.         ;
  2488.     break;}
  2489. }
  2490.    /* the action file gets copied in in place of this dollarsign */
  2491.  
  2492.  
  2493.   yyvsp -= yylen;
  2494.   yyssp -= yylen;
  2495. #ifdef YYLSP_NEEDED
  2496.   yylsp -= yylen;
  2497. #endif
  2498.  
  2499. #if YYDEBUG != 0
  2500.   if (yydebug)
  2501.     {
  2502.       short *ssp1 = yyss - 1;
  2503.       fprintf (stderr, "state stack now");
  2504.       while (ssp1 != yyssp)
  2505.     fprintf (stderr, " %d", *++ssp1);
  2506.       fprintf (stderr, "\n");
  2507.     }
  2508. #endif
  2509.  
  2510.   *++yyvsp = yyval;
  2511.  
  2512. #ifdef YYLSP_NEEDED
  2513.   yylsp++;
  2514.   if (yylen == 0)
  2515.     {
  2516.       yylsp->first_line = yylloc.first_line;
  2517.       yylsp->first_column = yylloc.first_column;
  2518.       yylsp->last_line = (yylsp-1)->last_line;
  2519.       yylsp->last_column = (yylsp-1)->last_column;
  2520.       yylsp->text = 0;
  2521.     }
  2522.   else
  2523.     {
  2524.       yylsp->last_line = (yylsp+yylen-1)->last_line;
  2525.       yylsp->last_column = (yylsp+yylen-1)->last_column;
  2526.     }
  2527. #endif
  2528.  
  2529.   /* Now "shift" the result of the reduction.
  2530.      Determine what state that goes to,
  2531.      based on the state we popped back to
  2532.      and the rule number reduced by.  */
  2533.  
  2534.   yyn = yyr1[yyn];
  2535.  
  2536.   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  2537.   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
  2538.     yystate = yytable[yystate];
  2539.   else
  2540.     yystate = yydefgoto[yyn - YYNTBASE];
  2541.  
  2542.   goto yynewstate;
  2543.  
  2544. yyerrlab:   /* here on detecting error */
  2545.  
  2546.   if (! yyerrstatus)
  2547.     /* If not already recovering from an error, report this error.  */
  2548.     {
  2549.       ++yynerrs;
  2550.  
  2551. #ifdef YYERROR_VERBOSE
  2552.       yyn = yypact[yystate];
  2553.  
  2554.       if (yyn > YYFLAG && yyn < YYLAST)
  2555.     {
  2556.       int size = 0;
  2557.       char *msg;
  2558.       int x, count;
  2559.  
  2560.       count = 0;
  2561.       for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
  2562.         if (yycheck[x + yyn] == x)
  2563.           size += strlen(yytname[x]) + 15, count++;
  2564.       msg = (char *) xmalloc(size + 15);
  2565.       strcpy(msg, "parse error");
  2566.  
  2567.       if (count < 5)
  2568.         {
  2569.           count = 0;
  2570.           for (x = 0; x < (sizeof(yytname) / sizeof(char *)); x++)
  2571.         if (yycheck[x + yyn] == x)
  2572.           {
  2573.             strcat(msg, count == 0 ? ", expecting `" : " or `");
  2574.             strcat(msg, yytname[x]);
  2575.             strcat(msg, "'");
  2576.             count++;
  2577.           }
  2578.         }
  2579.       yyerror(msg,"","");
  2580.       free(msg);
  2581.     }
  2582.       else
  2583. #endif /* YYERROR_VERBOSE */
  2584.     yyerror("parse error","","");
  2585.     }
  2586.  
  2587. yyerrlab1:   /* here on error raised explicitly by an action */
  2588.  
  2589.   if (yyerrstatus == 3)
  2590.     {
  2591.       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
  2592.  
  2593.       /* return failure if at end of input */
  2594.       if (yychar == YYEOF)
  2595.     YYABORT;
  2596.  
  2597. #if YYDEBUG != 0
  2598.       if (yydebug)
  2599.     fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
  2600. #endif
  2601.  
  2602.       yychar = YYEMPTY;
  2603.     }
  2604.  
  2605.   /* Else will try to reuse lookahead token
  2606.      after shifting the error token.  */
  2607.  
  2608.   yyerrstatus = 3;        /* Each real token shifted decrements this */
  2609.  
  2610.   goto yyerrhandle;
  2611.  
  2612. yyerrdefault:  /* current state does not do anything special for the error token. */
  2613.  
  2614. #if 0
  2615.   /* This is wrong; only states that explicitly want error tokens
  2616.      should shift them.  */
  2617.   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  2618.   if (yyn) goto yydefault;
  2619. #endif
  2620.  
  2621. yyerrpop:   /* pop the current state because it cannot handle the error token */
  2622.  
  2623.   if (yyssp == yyss) YYABORT;
  2624.   yyvsp--;
  2625.   yystate = *--yyssp;
  2626. #ifdef YYLSP_NEEDED
  2627.   yylsp--;
  2628. #endif
  2629.  
  2630. #if YYDEBUG != 0
  2631.   if (yydebug)
  2632.     {
  2633.       short *ssp1 = yyss - 1;
  2634.       fprintf (stderr, "Error: state stack now");
  2635.       while (ssp1 != yyssp)
  2636.     fprintf (stderr, " %d", *++ssp1);
  2637.       fprintf (stderr, "\n");
  2638.     }
  2639. #endif
  2640.  
  2641. yyerrhandle:
  2642.  
  2643.   yyn = yypact[yystate];
  2644.   if (yyn == YYFLAG)
  2645.     goto yyerrdefault;
  2646.  
  2647.   yyn += YYTERROR;
  2648.   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
  2649.     goto yyerrdefault;
  2650.  
  2651.   yyn = yytable[yyn];
  2652.   if (yyn < 0)
  2653.     {
  2654.       if (yyn == YYFLAG)
  2655.     goto yyerrpop;
  2656.       yyn = -yyn;
  2657.       goto yyreduce;
  2658.     }
  2659.   else if (yyn == 0)
  2660.     goto yyerrpop;
  2661.  
  2662.   if (yyn == YYFINAL)
  2663.     YYACCEPT;
  2664.  
  2665. #if YYDEBUG != 0
  2666.   if (yydebug)
  2667.     fprintf(stderr, "Shifting error token, ");
  2668. #endif
  2669.  
  2670.   *++yyvsp = yylval;
  2671. #ifdef YYLSP_NEEDED
  2672.   *++yylsp = yylloc;
  2673. #endif
  2674.  
  2675.   yystate = yyn;
  2676.   goto yynewstate;
  2677. }
  2678.  
  2679.  
  2680. Geom *
  2681. NewAggregate(obj)
  2682. Geom *obj;
  2683. {
  2684.     obj->name = Defstack->obj->name;
  2685.     obj->next = Defstack->obj->next;
  2686.     return obj;
  2687. }
  2688.